轻松玩转 Scikit-Learn 系列 —— 逻辑回归是回归 ?

简介: 逻辑回归,咋一听这名字,真的跟一个正儿八经的回归模型似的,实际上从原理上讲他是一个如假包换的分类器,英文名是 Logistics regression,也叫 logit regression,maximum-entropy classification,或者 log-linear classifier。

前言


逻辑回归,咋一听这名字,真的跟一个正儿八经的回归模型似的,实际上从原理上讲他是一个如假包换的分类器,英文名是 Logistics regression,也叫 logit regression,maximum-entropy classification,或者 log-linear classifier。


在逻辑回归中,会将样本的所有特征与样本属于某个种类的概率联系起来,即使每个特征都对应一个模型参数,通过训练不断修正模型参数,最后使用 logistic function (也叫 sigmoid 函数,该函数使输入从(-inf, inf)映射到输出(0,1),其图形如下)建模求出样本属于某个种类的概率。

17.jpg


下图是 Kaggle 上出现的统计在各个行业使用机器学习方法的使用率的情况。从图中可以看出,逻辑回归以领先第二名13.6%的绝对优势牢牢地占据了第一位。逻辑回归之所以能够坚挺在 C 位,绝对有与之相匹配的实力,我们会在代码实战中看到相关证明。

18.jpg



在 scikit-learn 中封装的逻辑回归,可以用来解决二分类和基于 OvR 和 OvO 的多分类问题。逻辑回归的损失函数是一个凸函数,存在全局最优解,为避免模型过拟合,常需要对模型进行正则化。所以,scikit-learn 中逻辑回归的实现的损失函数常加有惩罚项来对模型正则化。加上 L1 正则化项的损失函数为:

19.jpg

加上 L1 正则项的损失函数为:

20.jpg


实战


下面我们就用代码具体的展示下 scikit-learn 中,逻辑回归的使用、性能、以及进行一定的调参后的表现。

21.jpg

21.jpg22.jpg


默认模型的表现好像很差劲呐,还不如去抛硬币呢!那我们接下来就介绍下 scikit-learn 中封装的逻辑回归的一些超参数,并进行一定的调整,看看能提高多大程度的性能。


可调整的超参数:

penalty: str 类型,可取 ‘l1’ 或者 ‘l2’,默认值为 ‘l2’,用于明确损失函数惩罚项的正则类型;

tol: float 类型,默认值为 1e-4,表示容差,用于决定是否停止搜索;

C: float 类型,默认值为1.0,表示正则项的系数,用来决定模型需要正则化的程度;

solver: str 类型,默认取 'liblinear',可取{‘newton-cg’, ‘lbfgs’, ‘liblinear’, ‘sag’, ‘saga’} 中任一个,表示在优化过程中所使用的算法;

max_iter: int 型,默认取100,表示在优化收敛的过程中最大迭代的次数;


更多超参数,更详细的说,请小伙伴们查阅官方文档。我们先变化下两个超参数,令 C=0.1,penalty='l1' 试试:

23.jpg


这精度还是不行,稍微分析下数据可知,样本的标签值是与样本的特征有多项式关系,这就很容易想到可以用 scikit-learn 中的 PolynomialFeatures 类对数据进行预处理,这个过程可以用 Pipeline 进行简化处理。实现如下:

24.jpg


这回还不错,模型的精度达到了97%,为了进行比较,我们又引入两个其他模型———kNN 和 ANN,虽然都有两个 NN ,但这两个模型的确是没什么血缘关系,唯一的共同点估计就是都在分类领域有着不错的性能了吧!kNN 是 k 近邻算法,ANN 是人工神经网络,下面我们先看下 kNN 的表现。

25.jpg


kNN 精度还不错,再看 ANN 的:

26.jpg


经过100轮(EPOCHES=100)的训练,ANN的精度为 85%,还行,但不是特别的出色,相比已经达到百分之九十多的 kNN 和多项式回归来说。不过当训练500轮时,模型的准确率可以达到100%,但随之增长的是计算代价。

27.jpg28.jpg

这次分享就到这里,小伙伴们下次再见。

相关文章
|
19天前
|
机器学习/深度学习 算法 数据挖掘
|
22天前
|
机器学习/深度学习 PHP 开发者
探索PHP中的面向对象编程构建你的首个机器学习模型:以Python和scikit-learn为例
【8月更文挑战第30天】在PHP的世界中,面向对象编程(OOP)是一块基石,它让代码更加模块化、易于管理和维护。本文将深入探讨PHP中面向对象的魔法,从类和对象的定义开始,到继承、多态性、封装等核心概念,再到实战中如何应用这些理念来构建更健壮的应用。我们将通过示例代码,一起见证PHP中OOP的魔力,并理解其背后的设计哲学。
|
2天前
|
机器学习/深度学习 数据采集 算法
机器学习新纪元:用Scikit-learn驾驭Python,精准模型选择全攻略!
在数据爆炸时代,机器学习成为挖掘数据价值的关键技术,而Scikit-learn作为Python中最受欢迎的机器学习库之一,凭借其丰富的算法集、简洁的API和高效性能,引领着机器学习的新纪元。本文通过一个实际案例——识别垃圾邮件,展示了如何使用Scikit-learn进行精准模型选择。从数据预处理、模型训练到交叉验证和性能比较,最后选择最优模型进行部署,详细介绍了每一步的操作方法。通过这个过程,我们不仅可以看到如何利用Scikit-learn的强大功能,还能了解到模型选择与优化的重要性。希望本文能为你的机器学习之旅提供有价值的参考。
8 0
|
1月前
|
机器学习/深度学习 人工智能 算法
如何使用Scikit-learn在Python中构建一个机器学习分类器
如何使用Scikit-learn在Python中构建一个机器学习分类器
18 3
|
1月前
|
机器学习/深度学习 供应链 数据可视化
【python】python化妆品销售logistic逻辑回归预测分析可视化(源码+课程论文+数据集)【独一无二】
【python】python化妆品销售logistic逻辑回归预测分析可视化(源码+课程论文+数据集)【独一无二】
|
24天前
|
机器学习/深度学习 运维 数据挖掘
scikit-learn 1.0 版本重要新特性一览
scikit-learn 1.0 版本重要新特性一览
|
25天前
|
机器学习/深度学习 数据挖掘 Python
简单几步,教你使用scikit-learn做分类和回归预测
简单几步,教你使用scikit-learn做分类和回归预测
|
2月前
|
机器学习/深度学习 数据采集 数据挖掘
深入Scikit-learn:掌握Python最强大的机器学习库
【7月更文第18天】在当今数据驱动的世界中,机器学习已成为解锁数据潜力的关键。Python凭借其简洁的语法和丰富的库生态,成为数据科学家和机器学习工程师的首选语言。而在Python的众多机器学习库中,Scikit-learn以其全面、高效、易用的特点,被誉为机器学习领域的“瑞士军刀”。本文旨在深入探讨Scikit-learn的核心概念、实用功能,并通过实战代码示例,带你领略其强大之处。
83 12
|
2月前
|
机器学习/深度学习 数据采集 数据挖掘
智能决策新引擎:Python+Scikit-learn,打造高效数据分析与机器学习解决方案!
【7月更文挑战第26天】在数据驱动时代,企业需从大数据中提取价值以精准决策。Python凭借丰富的库成为数据分析利器,而Scikit-learn作为核心工具备受青睐。本文通过电商案例展示如何预测潜在买家以实施精准营销。首先进行数据预处理,包括清洗、特征选择与转换;接着采用逻辑回归模型进行训练与预测;最后评估模型并优化。此方案显著提升了营销效率和企业决策能力,预示着智能决策系统的广阔前景。
60 2
|
2月前
|
机器学习/深度学习 数据采集 算法
数据海洋中的导航者:Scikit-learn库引领Python数据分析与机器学习新航向!
【7月更文挑战第26天】在数据的海洋里,Python以强大的生态成为探索者的首选,尤其Scikit-learn库(简称sklearn),作为一颗璀璨明珠,以高效、灵活、易用的特性引领数据科学家们破浪前行。无论新手还是专家,sklearn提供的广泛算法与工具支持从数据预处理到模型评估的全流程。秉承“简单有效”的设计哲学,它简化了复杂模型的操作,如线性回归等,使用户能轻松比较并选择最优方案。示例代码展示了如何简洁地实现线性回归分析,彰显了sklearn的强大能力。总之,sklearn不仅是数据科学家的利器,也是推动行业进步的关键力量。
42 3