首页 > 编程语言 >Python+sklearn使用逻辑回归算法预测期末考试能否及格

Python+sklearn使用逻辑回归算法预测期末考试能否及格

时间:2023-06-10 16:38:02浏览次数:73  
标签:及格 ovr 逻辑 Python self 分类 sag sklearn liblinear


封面图片:《Python程序设计实验指导书》,董付国编著,清华大学出版社

=================

虽然名字中带有“回归”二字,但实际上逻辑回归是一个用于分类的线性模型,通常也称作最大熵分类或对数线性分类器。在该模型中,描述单个可能输出结果的概率通过一个逻辑函数进行建模。

逻辑回归的因变量既可以是二分类的,也可以是多分类的,但是二分类更常用一些。逻辑回归常用于数据挖掘、疾病自动诊断、经济预测等领域,例如可以挖掘引发疾病的主要因素,或根据这些因素来预测发生疾病的概率。

扩展库sklearn.linear_model中的LogisticRegression类实现了逻辑回归算法,其构造方法语法如下:

__init__(self, penalty='l2', dual=False, tol=0.0001, C=1.0, fit_intercept=True, intercept_scaling=1, class_weight=None, random_state=None, solver='liblinear', max_iter=100, multi_class='ovr', verbose=0, warm_start=False, n_jobs=1)

其中,比较常用的参数及含义如下表所示。

表  LogisticRegression类构造方法常用参数及含义

参数名称

含义

penalty

用来指定惩罚时的范数,默认为'l2',也可以为'l1',但求解器'newton-cg'、'sag'和'lbfgs'只支持'l2'

C

用来指定正则化强度的逆,必须为正实数,值越小表示正则化强度越大(这一点和支持向量机类似),默认值为1.0

solver

用来指定优化时使用的算法,该参数可用的值有'newton-cg'、'lbfgs'、'liblinear'、'sag'、'saga',默认值为'liblinear',不同求解器的区别如下:

l 'liblinear'使用坐标下降算法,对于小数据集是个不错的选择,而'sag'、'saga'对于大数据集的速度要快一些

l 对于多分类问题,只有'newton-cg'、'sag'、'saga'和'lbfgs'能够处理多项式损失,而'liblinear'局限于一对多问题(one-versus-rest schemes)

l 'newton-cg'、'sag'和'lbfgs'只支持'l2'正则化或者没有正则化,对于某些高维数据的收敛速度也更快一些,而'liblinear'和'saga'也能处理'l1'惩罚

l 'sag'使用随机平均梯度下降算法,对于样本数量和特征数量都很大的数据集,速度比其他求解器更快一些

multi_class

取值可以为'ovr'或'multinomial',默认值为'ovr'。如果设置为'ovr',对于每个标签拟合二分类问题,否则在整个概率分布中使用多项式损失进行拟合,该参数不适用于'liblinear'求解器

n_jobs

用来指定当参数multi_class='ovr'时使用的CPU核的数量,值为-1时表示使用所有的核

LogisticRegression类对象常用方法如下表所示。

表 LogisticRegression类对象常用方法

方法

功能

fit(self, X, y, sample_weight=None)

根据给定的训练数据对模型进行拟合

predict_log_proba(self, X)

对数概率估计,返回的估计值按分类的标签进行排序

predict_proba(self, X)

概率估计,返回的估计值按分类的标签进行排序

predict(self, X)

预测X中样本所属类的标签

score(self, X, y, sample_weight=None)

返回给定测试数据和标签的平均准确率

densify(self)

把系数矩阵转换为密集数组格式

sparsify(self)

把系数矩阵转换为稀疏格式

下面的代码演示了逻辑回归算法的原理,可以调整其中的参数以便对工作原理有更深入的了解。

Python+sklearn使用逻辑回归算法预测期末考试能否及格_编程语言

代码运行结果为:

Python+sklearn使用逻辑回归算法预测期末考试能否及格_机器学习_02

代码绘制结果为:

Python+sklearn使用逻辑回归算法预测期末考试能否及格_算法_03

在接下来的例子中,我们根据学生某门课程的复习时长和效率预测期末考试是否能够及格。首先构建逻辑回归模型并使用往年的调查结果数据训练模型,然后对本届学生的复习情况做出预测,并给出特定学习状态时考试及格和不及格的概率。在实际中,复习的越好通过考试的概率越大,但是由于心理素质强弱不同会对临场发挥有所影响,再加上考试题目对知识点的覆盖率也会影响最终成绩,所以复习的好也不能保证百分之百通过考试。

Python+sklearn使用逻辑回归算法预测期末考试能否及格_大数据_04

运行结果为:

Python+sklearn使用逻辑回归算法预测期末考试能否及格_大数据_05

公众号“Python小屋”

标签:及格,ovr,逻辑,Python,self,分类,sag,sklearn,liblinear
From: https://blog.51cto.com/u_9653244/6454777

相关文章

  • Python+tkinter根据窗体大小自动缩放并显示图像
    封面图片:《中学生可以这样学Python》,董付国,应根球著,清华大学出版社==============问题描述:创建窗体,显示一张图片,当改变窗体大小时,自动缩放并显示图片。参考代码:运行效果:公众号“Python小屋”......
  • Python+matplotlib绘制海螺贝壳上美丽的线条
    封面图片:《Python可以这样学》,董付国著,清华大学出版社,2017,本书在台湾同时发行繁体版。=============在海洋中的亿万只海螺中,大部分都是右旋螺纹,从底部看的话海螺开口在右边,如下图所示:据说,在几千只海螺中也很难找到一只左旋海螺,非常稀少,但也不是没有,如下图:技术要点:使用Python+numpy+......
  • Python多线程编程的一个掉进去不太容易爬出来的坑
    原文复制过来很多图片不能显示,发个链接吧。是使用Python+Socket编程模拟FTP工作原理的代码,多线程会引入一个坑,使用多进程不存在这个问题。原文地址 ......
  • Python+matplotlib绘制三维图形5个精选案例
    如果要绘制三维图形,首先需要使用下面的语句导入相应的对象:frommpl_toolkits.mplot3dimportAxes3D然后使用下面的两种方式之一声明要创建三维子图:ax=fig.gca(projection='3d')ax=plt.subplot(111,projection='3d')接下来就可以使用ax的plot()方法绘制三维曲线、plot_surface......
  • Python文件操作与matplotlib数据可视化案例一则
    问题描述:某商场开业三个月后,有顾客反应商场一楼的手机信号不好,个别收银台有时无法正常使用微信支付或支付宝,商场内也有些位置无法正常使用微信。为此,商场安排工作人员在不同位置对手机信号强度进行测试以便进一步提高服务质量和用户体验,测试数据保存于文件“D:\服务质量保证\商场一......
  • 警惕Python编程中异常处理结构可能的坑
    所谓异常,主要是指由于测试不充分导致在实际运行时遇到意料之外的错误而引发的代码崩溃。例如让用户输入两个数然后输出两个数的商,结果用户把除数输入为0。例如让用户输入文件名然后程序输出其中的内容,结果用户输入的文件名不存在。例如网络临时发生故障导致无法连接服务器。这样的......
  • Python+matplotlib绘制动态更新的柱状图
    问题描述:编写程序,生成测试数据,绘制水平柱状图,然后每隔0.5秒更新一次数据并实时根据最新数据绘制水平柱状图。参考代码:运行效果:公众号“Python小屋”......
  • 详解Python线程对象daemon属性对线程退出的影响
    进程、线程的概念以及多线程编程的基础知识请参考文末给出的方式在公众号历史文章中查找相关文章进行阅读。本文重点介绍线程对象daemon属性在线程退出时产生的作用和影响。首先,我们来看一下官方文档对守护线程(daemonthread)的描述:再来看一下官方文档对线程对象daemon属性的描述:可......
  • Python+pandas使用交叉表分析超市营业额数据
    交叉表是一种特殊的透视表,往往用来统计频次,也可以使用参数aggfunc指定聚合函数实现其他功能。扩展库pandas提供了crosstab()函数用来生成交叉表,返回新的DataFrame,其语法为:crosstab(index,columns,values=None,rownames=None,colnames=None,aggfunc=None,margins=False,dropn......
  • 这9个Python问题你能回答几个?
    周末了,一起开心开心。主要是想提醒一下,在和别人交流时应该详细描述问题,这一点真的非常非常非常重要。1、2、老师,我的代码可以运行,结果如下,我该怎么办?3、4、我的代码运行之后显示这个,请问怎么解决?5、6、怎么破,急,在线等。7、8、9、群里有人吗,谁能告诉我这个怎么办?公众号“Python小屋......