轻松玩转 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

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

相关文章
|
18天前
|
机器学习/深度学习 数据采集 算法
Python机器学习:Scikit-learn库的高效使用技巧
【10月更文挑战第28天】Scikit-learn 是 Python 中最受欢迎的机器学习库之一,以其简洁的 API、丰富的算法和良好的文档支持而受到开发者喜爱。本文介绍了 Scikit-learn 的高效使用技巧,包括数据预处理(如使用 Pipeline 和 ColumnTransformer)、模型选择与评估(如交叉验证和 GridSearchCV)以及模型持久化(如使用 joblib)。通过这些技巧,你可以在机器学习项目中事半功倍。
24 3
|
23天前
|
机器学习/深度学习 人工智能 算法
机器学习基础:使用Python和Scikit-learn入门
机器学习基础:使用Python和Scikit-learn入门
28 1
|
1月前
|
机器学习/深度学习 人工智能 算法
机器学习基础:使用Python和Scikit-learn入门
【10月更文挑战第12天】本文介绍了如何使用Python和Scikit-learn进行机器学习的基础知识和入门实践。首先概述了机器学习的基本概念,包括监督学习、无监督学习和强化学习。接着详细讲解了Python和Scikit-learn的安装、数据处理、模型训练和评估等步骤,并提供了代码示例。通过本文,读者可以掌握机器学习的基本流程,并为深入学习打下坚实基础。
23 1
|
1月前
|
机器学习/深度学习 人工智能 算法
机器学习基础:使用Python和Scikit-learn入门
本文介绍了如何使用Python和Scikit-learn进行机器学习的基础知识和实践。首先概述了机器学习的基本概念,包括监督学习、无监督学习和强化学习。接着详细讲解了Python和Scikit-learn的安装、数据处理、模型选择与训练、模型评估及交叉验证等关键步骤。通过本文,初学者可以快速上手并掌握机器学习的基本技能。
53 2
|
1月前
|
机器学习/深度学习 数据挖掘 Serverless
手把手教你全面评估机器学习模型性能:从选择正确评价指标到使用Python与Scikit-learn进行实战演练的详细指南
【10月更文挑战第10天】评估机器学习模型性能是开发流程的关键,涉及准确性、可解释性、运行速度等多方面考量。不同任务(如分类、回归)采用不同评价指标,如准确率、F1分数、MSE等。示例代码展示了使用Scikit-learn库评估逻辑回归模型的过程,包括数据准备、模型训练、性能评估及交叉验证。
65 1
|
1月前
|
机器学习/深度学习 人工智能 数据挖掘
机器学习基础:使用Python和Scikit-learn入门
【10月更文挑战第6天】在人工智能领域,机器学习已成为核心技术。本文指导初学者使用Python与Scikit-learn入门机器学习,涵盖基本概念、环境搭建、数据处理、模型训练及评估等环节。Python因简洁性及其生态系统成为首选语言,而Scikit-learn则提供了丰富工具,简化数据挖掘与分析流程。通过实践示例,帮助读者快速掌握基础知识,为进一步深入研究奠定坚实基础。
28 4
|
1月前
|
机器学习/深度学习 数据采集 算法
【Python篇】从零到精通:全面分析Scikit-Learn在机器学习中的绝妙应用
【Python篇】从零到精通:全面分析Scikit-Learn在机器学习中的绝妙应用
38 2
|
2月前
|
机器学习/深度学习 算法 数据挖掘
Python数据分析革命:Scikit-learn库,让机器学习模型训练与评估变得简单高效!
在数据驱动时代,Python 以强大的生态系统成为数据科学的首选语言,而 Scikit-learn 则因简洁的 API 和广泛的支持脱颖而出。本文将指导你使用 Scikit-learn 进行机器学习模型的训练与评估。首先通过 `pip install scikit-learn` 安装库,然后利用内置数据集进行数据准备,选择合适的模型(如逻辑回归),并通过交叉验证评估其性能。最终,使用模型对新数据进行预测,简化整个流程。无论你是新手还是专家,Scikit-learn 都能助你一臂之力。
136 8
|
2月前
|
机器学习/深度学习 Python
9-3|使用Python的scikit-learn库来训练一个逻辑回归模型,检测句子是否含有侮辱性内容:
9-3|使用Python的scikit-learn库来训练一个逻辑回归模型,检测句子是否含有侮辱性内容:
|
2月前
|
机器学习/深度学习 算法 数据挖掘