机器学习基础篇(八)——逻辑回归

机器学习基础篇(八)——逻辑回归

一、简介

分类问题是机器学习中常见的一种问题,而逻辑回归则是非常适合二分类问题的一种算法。
逻辑回归可以将数据集中的点划分成为两个类别。例如,我们可以将数据分成A类和B类。模型将给出特定数据点属于B类的概率,如果它低于0.5,那么就属于A类。如果高于0.5,那么该数据点属于B类。(大部分情况下阈值设为0.5,特定情况下也可以设置为其他值)
举个栗子 如图所示,学生考试是否成功通过是一个典型的二分类问题。
在这里插入图片描述
学生的考试是否成功是由输入值所决定的,输入值既有连续性变量又有离散型变量,而标签值则是二分类的。 这种情况下,使用逻辑回归算法显得很有必要。

二、原理

线性回归的预测所输出的值为[-∞,∞],而逻辑回归所对应的预测输出值为[0,1]。这是因为,逻辑回归在线性回归的基础上,使用sigmoid函数创建了一个S形曲线,将预测值映射到了[0,1]中。
如图所示:
在这里插入图片描述
记得第一节学到的线性回归模型,在模型中,我们作出的模型函数为y=a0+a1x,其中a0称为偏差,a1则称为权重。而逻辑回归则是将上式运用sigmoid函数进行转化,得到了如下模型:
在这里插入图片描述
同样的,对于y=a0+a1
x1+a2x2+…+anxn 可以使用sigmoid函数转化为:
在这里插入图片描述
其中:A代表权重,X代表输入的特征值,模型signoid函数给出了该样本属于某一类的概率,取值在[0,1]之间。
A=[a0,a1,a2…an],X=[x1,x2,x3…xn]

三、多项式逻辑回归

到目前为止,我们一直在考虑的都是二分类问题。那么对于多分类问题,例如数字识别问题,我们输出的值是0到9之间的所有整数。这种情况下,我们应该怎么做呢?
我们可以建立多个模型,将该问题转化为二分类问题。诸如,可以分为两类,1,非1;这样就变成了一个二分类问题。同理我们也可以对其他数字进行这种处理,建立模型。当然,具体的实现细节超过了我们本节的学习内容,在此不做赘述。

四、代码展示

# 多项式回归
from sklearn.linear_model import LogisticRegression
import numpy as np
import random
# 定义训练数据集的分类标签
def true_classifier(i):
    if i>=700:
        return 1
    return 0
# 创建一个1-1000内的随机数据集
x=np.array([random.randint(0,1000) for i in range(0,1000)])
# 逻辑回归模型需要建立一个二维的数组,所以我们首先改变下数组X的形状
x=x.reshape((-1,1))
# 对于每一个数据点,为其定义一个标签,这样我们就有了一千个样本,每个样本具有一个标签。标签为0,1,0代表失败,1代表成功
y=[true_classifier(x[i][0]) for i in range (0,1000)]
# 然后我们将Y也变成一个数组
y=np.array(y)
# 查看x和y的情况
# print("x****************************\n",x)
# print("y****************************\n",y)
# 建立逻辑回归模型,求解参数的方法设置为liblinear,其余方法有{'newton-cg','lbfgs','sag'},默认方法为liblinear
model=LogisticRegression(solver='liblinear')
# 使用逻辑回归模型训练数据集
model=model.fit(x,y)
# 创建100个数据作为测试集
samples=[random.randint(0,1000) for i in range(0,100)]
# 同理改变测试及数据的形状
samples=np.array(samples)
samples=samples.reshape(-1,1)
# 现在我们使用模型对于测试集进行测试,输出值为概率,class代表类别
clas=model.predict(samples)
proba=model.predict_proba(samples)
# 格式化输出
# 格式为[预测值]:所属分类,概率[属于0类的概率,属于1类的概率]
num_accurate=0
for i in range(0,100):
    if(true_classifier(samples[i]))==(clas[i]==1):
        num_accurate=num_accurate+1
    print(''+str(samples[i])+':所属分类'+str(clas[i])+',概率为'+str(proba[i]))

运行结果
在这里插入图片描述

在这里插入图片描述

五、小结

逻辑回归算法是基于线性回归的算法,并且将其扩展到分类问题上。虽然逻辑回归算法无法直接处理多分类问题,但是针对二分类问题还是十分有效并且易于实现的。面对二分类问题时,我们可以首先考虑使用逻辑回归算法。在sklearn库中使用逻辑回归算法十分简单,我们可以按照示例代码和注释进行操作。逻辑回归算法的基本思想是将训练集数据和所属标签一一对应,直接构建模型。与之前的算法一样,没有一个机器学习的算法是万能的,所以我们需要注意逻辑回归算法的适用条件并且在合适的时候使用。
自学自用,希望可以和大家积极沟通交流,小伙伴们加油鸭,如有错误还请指正,不喜勿喷,喜欢的小伙伴帮忙点个赞支持,蟹蟹呀

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

柚子味的羊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值