关键词:
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+e−t1
当 t 趋于无穷小时,函数值趋于 0;当 t 趋于无穷大时,函数值趋于 1;它是一条平滑的 S 型曲线,如下图所示:
所以我们将自变量整体带入后,就可以得到逻辑回归的预测函数为:
p
^
=
1
1
+
e
−
W
T
x
+
b
\\colorViolet\\hat p=\\frac11+e^-W^Tx+b
p^=1+e−WTx+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来区 查看详情
收藏|机器学习分类算法
...量确定因变量所属类别的技术。 分类用于预测离散响应逻辑回归逻辑回归类似于线性回归,适用于因变量不是一个数值字的情况(例如,一个“是/否”的响应)。它虽然被称为回归,但却是基于根据回归的分类,... 查看详情
收藏|机器学习分类算法
...量确定因变量所属类别的技术。 分类用于预测离散响应逻辑回归逻辑回归类似于线性回归,适用于因变量不是一个数值字的情况(例如,一个“是/否”的响应)。它虽然被称为回归,但却是基于根据回归的分类,... 查看详情
收藏|机器学习分类算法
...量确定因变量所属类别的技术。 分类用于预测离散响应逻辑回归逻辑回归类似于线性回归,适用于因变量不是一个数值字的情况(例如,一个“是/否”的响应)。它虽然被称为回归,但却是基于根据回归的分类,... 查看详情