02-14 scikit-learn库之逻辑回归
更新、更全的《机器学习》的更新网站,更有python、go、数据结构与算法、爬虫、人工智能教学等着你:https://www.cnblogs.com/nickchen121/p/11686958.html
scikit-learn库之逻辑回归
相比较线性回归,由于逻辑回归的变种较少,因此scikit-learn库中的逻辑回归类就比较少,只有LogisticRegression
、LogisticRegressionCV
和logistic_regression_path
。
接下来将会讨论这三者的区别,由于是从官方文档翻译而来,翻译会略有偏颇,有兴趣的也可以去scikit-learn官方文档查看https://scikit-learn.org/stable/modules/classes.html#module-sklearn.linear_model ,需要注意逻辑回归和线性回归都在sklearn.linear_model
包中。
一、LogisticRegression
1.1 使用场景
逻辑回归一般使用于分类场景,可以使用参数让普通的二元分类问题变成多分类问题。
1.2 代码
from sklearn.datasets import load_iris
from sklearn.linear_model import LogisticRegression
X, y = load_iris(return_X_y=True)
clf = LogisticRegression(random_state=0, solver='lbfgs', max_iter=100,
multi_class='multinomial')
# 由于迭代更新次数太少,算法无法收敛,报错
clf.fit(X, y)
/Applications/anaconda3/lib/python3.7/site-packages/sklearn/linear_model/logistic.py:758: ConvergenceWarning: lbfgs failed to converge. Increase the number of iterations.
"of iterations.", ConvergenceWarning)
LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True,
intercept_scaling=1, max_iter=100, multi_class='multinomial',
n_jobs=None, penalty='l2', random_state=0, solver='lbfgs',
tol=0.0001, verbose=0, warm_start=False)
clf = LogisticRegression(random_state=0, solver='lbfgs', max_iter=1000,
multi_class='multinomial')
clf.fit(X, y)
LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True,
intercept_scaling=1, max_iter=1000, multi_class='multinomial',
n_jobs=None, penalty='l2', random_state=0, solver='lbfgs',
tol=0.0001, verbose=0, warm_start=False)
clf.predict(X[:2, :])
array([0, 0])
clf.predict_proba(X[:2, :])
array([[9.81579028e-01, 1.84209573e-02, 1.44796627e-08],
[9.71349907e-01, 2.86500630e-02, 3.01442199e-08]])
clf.score(X, y)
0.9733333333333334
1.3 参数详解
- penalty:正则化,str类型。由于逻辑回归的目标函数是基于线性回归而来,因此该正则化参数可以选择'l1'和'l2',分别对应L1正则化和L2正则化,两则作用和线性回归的正则化项作用类似。默认为'l2'。
- dual:对偶或原始方法,bool类型。只有满足solver='liblinear'并且penalty='l2'时才可使用对偶方法,即设置dual=True,当样本数大于特征数的时候,通常设置为False。默认为False。
- tol:停止求解的标准,float类型。求解到多少的时候认为求出最优解,停止求解。默认为0.0001。
- c:正则化系数\(\lambda\)的倒数,float类型。数值越小正则化越强。默认为1.0。
- fit_intercept:截距(偏置单元),bool类型。是否存在截距或者偏置单元。默认为True。
- intercept_scaling:扩展截距,float类型。只有满足solver='liblinear'并且fit_intercept=True时才有用。默认为1。
- class_weight:类别权重,dict类型或str类型。对于二元分类问题可以使用class_weight={0:0.9,1:0.1},表示0类别权重为0.9,1类别权重为0.1,str类型即为'balanced',模型将根据训练集自动修改不同类别的权重。默认为None。通常解决下述两个问题:
- 不同类别数据量不平衡问题,如0类有1个数据,1类有999个数据,如果不考虑权重问题,则模型基本会把所有的未来新样本预测为1类,因此则可以手动适当增加0类的权重,也可以使用class_weight='balanced'自动提高0类的权重。
- 将癌症人士分类为健康人士的会有很大的风险,有时候宁愿让健康人士被分类为癌症认识,然后再通过人工甄别他们的健康情况,通常这个时候可以适当提高癌症人士的权重。
- random_state:随机数种子,int类型。仅在solve={'sag','liblinear'}时有用。默认为None。
- solver:优化算法选择,str类型。共有{'newton-cg','lbfgs','sag','liblinear','saga'}五种选择,当penalty='l1'时,目标函数将会变得连续不可导,因此只能选择'liblinear',当penalty='l2'时,则可以选择{'newton-cg','lbfgs','sag','liblinear','saga'},默认为'liblinear'。其中'liblinear'是坐标轴下降法,适合小数据集;'newton-cg'是牛顿法;'lbfgs'是拟牛顿法;'sag'是随机梯度下降法,适合大数据集。默认为'liblinear'。
- max_iter:迭代次数,int类型。算法迭代次数,算法迭代到一定次数会收敛。只有solver={'newton-cg','sag','lbfgs'}才有用。默认为100。
- multi_class:多分类,str类型。当solver='liblinear'时,只能选择'ovr',当solver={'newton-cg','lbfgs','sag','saga'}时,可以选择'ovr'或'multinomial'。'ovr'相对简单,速度快,但是分类效果差;'multinomial'分类速度慢,但是分类效果好。默认为'ovr'。
- verbose:日志冗长度,int类型。verbose=0,不输出训练过程;verbose=1,输出部分训练过程;verbose>1,输出所有的训练过程。默认为0。
- warm_start:热启动,bool类型。bool=True,每次初始化参数时,使用上一次的fit()拟合后的结果初始化。默认为False。
- n_jobs:并行数。n_jobs=1使用1个cpu运行程序;n_jobs=2,使用2个cpu运行程序;n_jobs=-1,使用所有cpu运行程序。默认为1。
1.4 属性
- classes:array类型,训练集中所有类标签组成的列表。
- coef:array类型,决策函数的系数,如果有多分类就会是k行的系数,其中k是训练集的类别数。
- intercept_:array类型,截距,二分类就只有一个,多分类就会有n个。
- n_iter_:array类型,实际上迭代次数,即达到收敛时的迭代次数。
1.5 方法
- decision_functino(X):预测样本X的置信度分数。
- densify():将稀疏矩阵改成稠密矩阵。
- fit(X,y,sample_weight=None):把数据放入模型中训练模型,其中sample_weight=None是array类型可以对训练集中实例添加权重,即对训练集中不同的数据增加不同的权重。
- get_params([deep]):返回模型的参数,可以用于Pipeline中。
- predict(X):预测样本X的分类类别。
- predict_lot_proba(X):返回样本X在各个类别上对应的对数概率。
- predict_proba(X):返回样本X在各个类别上对应的概率。
- score(X,y[,sample_weight]):基于报告决定系数\(R^2\)评估模型。
- set_prams(**params):创建模型参数。
- sparsify():将系数矩阵转换为稀疏矩阵,调用该方法后再选择coef_属性便是稀疏矩阵。
- sample_weight:样本权重参数。
二、LogisticRegressionCV
LogisticRegressionCV
模型在目标函数和优化方式类似于LogisticRegression
,但是可以自己手动输入10组、100组参数\(C\),该模型会通过交叉验证后给你这组参数中最优模型。
三、logistic_regression_path
logistic_regression_path
模型比较特殊,它拟合数据后,不能直接来做预测,只能为拟合数据选择合适逻辑回归的系数和正则化系数,一般用在模型选择的时候。由于不经常使用这个类,所以此处不多赘述。
02-14 scikit-learn库之逻辑回归的更多相关文章
- python sklearn库实现逻辑回归的实例代码
Sklearn简介 Scikit-learn(sklearn)是机器学习中常用的第三方模块,对常用的机器学习方法进行了封装,包括回归(Regression).降维(Dimensionality Red ...
- Python_sklearn机器学习库学习笔记(三)logistic regression(逻辑回归)
# 逻辑回归 ## 逻辑回归处理二元分类 %matplotlib inline import matplotlib.pyplot as plt #显示中文 from matplotlib.font_m ...
- [笔记]机器学习(Machine Learning) - 02.逻辑回归(Logistic Regression)
逻辑回归算法是分类算法,虽然这个算法的名字中出现了"回归",但逻辑回归算法实际上是一种分类算法,我们将它作为分类算法使用.. 分类问题:对于每个样本,判断它属于N个类中的那个类或哪 ...
- (原创)(四)机器学习笔记之Scikit Learn的Logistic回归初探
目录 5.3 使用LogisticRegressionCV进行正则化的 Logistic Regression 参数调优 一.Scikit Learn中有关logistics回归函数的介绍 1. 交叉 ...
- 逻辑回归原理_挑战者飞船事故和乳腺癌案例_Python和R_信用评分卡(AAA推荐)
sklearn实战-乳腺癌细胞数据挖掘(博客主亲自录制视频教程) https://study.163.com/course/introduction.htm?courseId=1005269003&a ...
- 机器学习_线性回归和逻辑回归_案例实战:Python实现逻辑回归与梯度下降策略_项目实战:使用逻辑回归判断信用卡欺诈检测
线性回归: 注:为偏置项,这一项的x的值假设为[1,1,1,1,1....] 注:为使似然函数越大,则需要最小二乘法函数越小越好 线性回归中为什么选用平方和作为误差函数?假设模型结果与测量值 误差满足 ...
- Python实践之(七)逻辑回归(Logistic Regression)
机器学习算法与Python实践之(七)逻辑回归(Logistic Regression) zouxy09@qq.com http://blog.csdn.net/zouxy09 机器学习算法与Pyth ...
- 【数据分析】线性回归与逻辑回归(R语言实现)
文章来源:公众号-智能化IT系统. 回归模型有多种,一般在数据分析中用的比较常用的有线性回归和逻辑回归.其描述的是一组因变量和自变量之间的关系,通过特定的方程来模拟.这么做的目的也是为了预测,但有时也 ...
- kaggle信用卡欺诈看异常检测算法——无监督的方法包括: 基于统计的技术,如BACON *离群检测 多变量异常值检测 基于聚类的技术;监督方法: 神经网络 SVM 逻辑回归
使用google翻译自:https://software.seek.intel.com/dealing-with-outliers 数据分析中的一项具有挑战性但非常重要的任务是处理异常值.我们通常将异 ...
随机推荐
- 【Offer】[33] 【二叉搜索树的后序遍历序列】
题目描述 思路分析 测试用例 Java代码 代码链接 题目描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果.如果是则返回true, 否则返回false. 假设输入的数组的任意两个数字 ...
- Maven项目使用Nexus作为远程仓库的settings.xml配置
Maven项目使用Nexus作为远程仓库的settings.xml配置(转) 在自己电脑C:\Users\hanmm\.m2\下的setting.xml. 1.服务器配置 <server> ...
- kafka经典入门
问题导读 1.Kafka独特设计在什么地方?2.Kafka如何搭建及创建topic.发送消息.消费消息?3.如何书写Kafka程序?4.数据传输的事务定义有哪三种?5.Kafka判断一个节点是否活着有 ...
- 【学习笔记】第二章 python安全编程基础---正则表达式
一.python正则表达式 定义:正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式相匹配: 1.1RE模块:是python语言拥有全部的正则表达式功能的一个正则模块: 常见 ...
- charles 编辑菜单总结
本文参考:charles 编辑菜单总结 charles中proxy菜单的介绍:我的是4.1.2版本,mac系统下的菜单大同小异: 如下图: 这里其实都是常用的功能: 大概可以分为5个大块,看下分割线就 ...
- 【Python爬虫】第四课(查询照片拍摄地址)
首先,要能够查询到照片地址,查询的照片必须要开GPS拍,且上传时用原图…… 查询图片的exif信息,使用exifread包 import exifread img = exifread.process ...
- 线控性能比拼,MKZ与CRV作为自动驾驶开发平台的全面测评
全球自动驾驶创业公司最主流的测试开发用车是林肯MKZ,这是因为其高性能高精度的线控能力表现,易于使用逆向工程实现改装,以及存在成熟的线控改造服务提供商AS和Dataspeed,共同为自动驾驶初创及辅助 ...
- Mysql学习笔记整理之引擎
mysql的引擎: myisam引擎 Mysql 5.5之前默认的存储引擎 数据.索引分别存储 (数据物理磁盘---索引物理磁盘) .MYD 存储数据 表级索 ...
- 数据结构之二叉树篇卷二 -- 二叉树递归遍历(With Java)
一.先序递归遍历(Preorder Recursive Traversal) 1.1 算法 首先需要明确的是这里的序是针对 root 节点而言的.故先序即先“访问”根节点,其次“访问”其左右节点. 1 ...
- selenium-01-简介
一.Selenium是什么? Selenium是ThroughtWorks公司一个强大的开源Web功能测试工具系列,本系列现在主要包括以下4款: 1.Selenium Core:支持DHTML的测试案 ...