逻辑回归|机器学习|分类算法(代码片段)

桃陉 桃陉     2023-01-11     729

关键词:


1.逻辑回归

1.1逻辑回归原理

∙ \\bullet 逻辑回归又叫对数几率回归,是一种对数几率模型,可以求解二分类问题。

∙ \\bullet 之前我们学习过线性回归模型,带入模型后每一个点都有一个对应的实数值,范围为整个实数域;但是由于逻辑回归是利用回归方法解决二分类问题,所以求得的结果只能有两个值,在这里我们使用概率来对这两类进行描述:
y ^ = 0 p ^ < 0.5 1 p ^ > 0.5 \\colorViolet\\beginmatrix \\hat y & = & \\left\\\\beginmatrix 0 & \\hat p<0.5 \\\\ 1 & \\hat p>0.5 \\endmatrix\\right. & \\endmatrix y^=01p^<0.5p^>0.5

在上述式子中, y ^ \\colorRed\\hat y y^ 代表最终输出的标签值,它只有两个取值,当概率 p ^ \\colorRed\\hat p p^ 大于0.5时取值1;当概率 p ^ \\colorRed\\hat p p^ 小于0.5时取值为0;

∙ \\bullet 所以我们现在的问题就是如何把输出限制在(0,1)之间,通过线性回归的学习我们知道在线性回归中输出结果为: y ^ = W T x + b \\color Violet\\hat y = W^Tx+b y^=WTx+b

那么我们现在需要通过另外一个 σ \\sigma σ函数将其进行压缩,即 y ^ = σ ( W T + b ) \\colorViolet\\hat y=\\sigma(W^T+b) y^=σ(WT+b),下面我们继续介绍 σ \\colorRed\\sigma σ 函数。

1.2sigmoid函数

上面我们提到的 σ \\colorRed\\sigma σ 函数表达式如下:
σ ( t ) = 1 1 + e − t \\colorViolet\\sigma (t) =\\frac11+e^-t σ(t)=1+et1

当 t 趋于无穷小时,函数值趋于 0;当 t 趋于无穷大时,函数值趋于 1;它是一条平滑的 S 型曲线,如下图所示:


所以我们将自变量整体带入后,就可以得到逻辑回归的预测函数为:
p ^ = 1 1 + e − W T x + b \\colorViolet\\hat p=\\frac11+e^-W^Tx+b p^=1+eWTx+b1


2.相关代码

2.1LogisticsRegression类

import numpy as np
import warnings
warnings.filterwarnings("ignore")
#逻辑回归模型
class LogisticsRegression:
	#和线性回归模型一样,我们最后要求得还是θ向量
    def __init__(self):
        '''初始化逻辑回归模型'''
        self.theta = None
        
    #定义sigmoid函数,将结果压缩到(0,1)之间    
    def sigmoid(self,x):
        '''
        sigmoid函数
        :param x: 转换前的输入
        :return: 转换后的概率
        '''
        return 1/(1+np.exp(-x))

	#使用梯度下降法,不断更新θ值
    def fit(self,x,y,eta=1e-3,n_iters=1e4):
        '''
        训练逻辑回归模型
        :param x: 训练集特征数据,类型为ndarray
        :param y: 训练集标签,类型为ndarray
        :param eta: 学习率,类型为float
        :param n_iters: 训练轮数,类型为int,默认值为10000
        :return: 模型参数,类型为ndarray
        '''
        self.theta = np.zeros(x.shape[1])#给theta赋初值,原始值都为0
        i_iter = 0
        while i_iter < n_iters:
            print("训练轮次:", i_iter)
            gradient = (self.sigmoid(x.dot(self.theta))-y).dot(x)#求当出当前梯度
            self.theta = self.theta -eta*gradient#更新theta
            i_iter += 1

    # 预测函数
    def predict(self,x):
        '''
        :param x: 测试集特征数据,类型为ndarray
        :return: 与测试
        '''        
        a = self.sigmoid(x.dot(self.theta))#通过sigmoid函数,将预测值变为概率值
        return np.array(a >= 0.5, dtype='int')#当概率值大于0.5时,则认为是属于标签 1

# 求准确率
def score(label, predict):
    '''
    :param label: 测试集标签数据,类型为ndarray
    :param predict: 预测标签数据,类型为ndarray
    '''
    label=label.astype(np.int)#将label转换为numpy.int类型
    return np.mean(label == predict)  #该函数求的是平均值

2.2求解代码

from sklearn.model_selection import train_test_split
import pandas as pd
import numpy as np
#读取数据,csv文件中最后一列为标签值,其他列都为特征值(这里带入自己的数据即可,注意每个变量代表的含义)
data = pd.read_csv('/data/shixunfiles/3efa9f920dd798c7a3c754a0f9e1da2d_1577432653240.csv')

#提取特征值和标签值
X = data.iloc[:,:-1]
y = data.iloc[:,-1]

#对数据进行标准化
#减去一列的平均值除以一列的标准差
X = (X-np.mean(X,axis=0))/np.std(X,axis=0)

#对特征值加一列x0,x0的所有值为1,相当于偏离值b的系数(前面线性回归模型说过)
X = np.hstack([np.ones(shape=(len(X),1)),X])

#划分训练集与测试集,参数test_size设为0.2,random_state设为21
x_train,x_test,y_train,y_test = train_test_split(X,y,test_size = 0.2,random_state = 21)

#建立模型,并训练模型
Lr = LogisticsRegression()
Lr.fit(x_train,y_train)

#用测试数据集进行预测
predict = Lr.predict(x_test)

#评估预测的准确率
score = score(y_test,predict)
print(score)

2.3输出结果


3.直接调库使用

∙ \\bullet 实际在使用时,不需要自己实现逻辑回归的模型,此时我们直接调库即可;

∙ \\bullet 格式为:from sklearn.linear_model import LogisticRegression

∙ \\bullet 常用方法如下:

方法格式含义
fit(X,y)拟合线性回归模型,X为特征值矩阵,y为标签向量
predict(X)得到模型预测的结果向量,X为输入特征值矩阵
score(X,y)得到正确率,X为测试用例预测标签,y为真实结果的标签

机器学习-对数几率回归(逻辑回归)算法(代码片段)

...。简介对数几率回归(LogisticRegression),也称逻辑回归,虽然名字中含有回归,但其实是一种分类算法。找一个单调可微函数将分类任务中的真实 查看详情

机器学习:逻辑回归(ovr与ovo)(代码片段)

一、基础理解问题:逻辑回归算法是用回归的方式解决分类的问题,而且只可以解决二分类问题;方案:可以通过改造,使得逻辑回归算法可以解决多分类问题;改造方法:OvR(OnevsRest),一对剩余的意思,有时候也称它为 ... 查看详情

机器学习笔记-基于逻辑回归的分类预测(代码片段)

基于逻辑回归的分类预测1逻辑回归的介绍和应用1.1逻辑回归的介绍逻辑回归(Logisticregression,简称LR)虽然其中带有"回归"两个字,但逻辑回归其实是一个分类模型,并且广泛应用于各个领域之中。虽然... 查看详情

机器学习分类算法之逻辑回归(代码片段)

一、概念逻辑回归(LogisticRegression,LR)是一种广义的线性回归分析模型,属于监督学习算法,需要打标数据,可以用在回归、二分类和多分类等问题上,最常用的是二分类。线性回归就是通过一条曲线区分不同的数据集,在二分类问... 查看详情

逻辑回归实例(代码片段)

...一种机器学习分类算法,用于预测分类因变量的概率。在逻辑回归中,因变量是一个二进制变量,包含编码为1(是,成功等)或0(不,失败等)的数据。换句话说,逻辑回归模型预测P(Y=1)是X的函数。  数据  该数据集... 查看详情

转:机器学习算法原理解析-分类(代码片段)

...别法,即最近邻算法KNN;贝叶斯分类器;线性判别法,即逻辑回归算法;决策树;支持向量机;神经网络;1. KNN分类算法原理及应用1.1 KNN概述K最近邻(k-NearestNeighbor,KNN)分类算法是最简单的机器学习算法。KNN算法的指... 查看详情

机器学习算法:逻辑回归api介绍(代码片段)

学习目标知道逻辑回归api的用法sklearn.linear_model.LogisticRegression(solver='liblinear',penalty=‘l2’,C=1.0)solver可选参数:'liblinear','sag','saga','newton-cg','l 查看详情

分类算法之逻辑回归--理论+案例+代码

分类算法之逻辑回归–理论+案例+代码标签(空格分隔):SPARK机器学习1.逻辑回归概述1.1概述逻辑回归与线性回归类似,但它不属于回归分析家族(主要为二分类),而属于分类家族,差异主... 查看详情

[机器学习]--逻辑回归总结

逻辑回归是一个分类算法,它可以处理二元分类以及多元分类。虽然它名字里面有“回归”两个字,却不是一个回归算法。那为什么有“回归”这个误导性的词呢?个人认为,虽然逻辑回归是分类模型,但是它的原... 查看详情

机器学习故事汇-逻辑回归算法

机器学习故事汇-逻辑回归算法今天我们要来讨论的一个分类算法-逻辑回归(你有没有搞错,这不还是回归吗,虽然名字带上了回归其实它是一个非参考技术A机器学习故事汇-逻辑回归算法今天我们要来讨论的一个分类算法-逻辑... 查看详情

机器学习logistic分类回归算法(二元分类&多元分类)(代码片段)

...专栏✨—机器学习—✨【机器学习】logistics分类一、线性回归能用于分类吗?二、二元分类2.1假设函数2.1.1案例一2.1.2例子二2.2拟合logistic回归参数θi\\theta_iθi​三、 查看详情

机器学习逻辑回归分类评估方法(代码片段)

目录1分类评估方法1.1精确率与召回率1.1.1混淆矩阵1.1.2精确率与召回率1.2F1-score1.3分类评估报告api2ROC曲线与AUC指标2.1TPR与FPR2.2ROC曲线2.3AUC指标2.4AUC计算API2.5小结3ROC曲线的绘制3.1曲线绘制3.1.1序列一曲线绘制3.1.2序列二曲线绘制3.1.3... 查看详情

机器学习(05)——主要概念理解(代码片段)

...包括:K最近邻算法、朴素贝叶斯算法、线性回归算法、逻辑回归算法、决策树算法、神经网络算法、支持向量机算法、因子分解机算法等无监督学习无监督学习,指的是通过对数据的统计、分 查看详情

机器学习基础09day(代码片段)

分类算法之逻辑回归逻辑回归(LogisticRegression),简称LR。它的特点是能够是我们的特征输入集合转化为0和1这两类的概率。一般来说,回归不用在分类问题上,因为回归是连续型模型,而且受噪声影响比较大。如果非要应用进... 查看详情

机器学习-非线性回归(unlinearregression)-逻辑回归(logisticregression)算法(代码片段)

...的概率=AB同时发生的概率/B发生的概率LogisticRegression(逻辑回归)例子以h(x)>0.5来区分以h(x)>0.2来区 查看详情

收藏|机器学习分类算法

...量确定因变量所属类别的技术。 分类用于预测离散响应逻辑回归逻辑回归类似于线性回归,适用于因变量不是一个数值字的情况(例如,一个“是/否”的响应)。它虽然被称为回归,但却是基于根据回归的分类,... 查看详情

收藏|机器学习分类算法

...量确定因变量所属类别的技术。 分类用于预测离散响应逻辑回归逻辑回归类似于线性回归,适用于因变量不是一个数值字的情况(例如,一个“是/否”的响应)。它虽然被称为回归,但却是基于根据回归的分类,... 查看详情

收藏|机器学习分类算法

...量确定因变量所属类别的技术。 分类用于预测离散响应逻辑回归逻辑回归类似于线性回归,适用于因变量不是一个数值字的情况(例如,一个“是/否”的响应)。它虽然被称为回归,但却是基于根据回归的分类,... 查看详情