逻辑回归算法Sklearn文档介绍

API文档

sklearn.linear_model.LogisticRegression(penalty=’l2’, dual=False, tol=0.0001,
 C=1.0, fit_intercept=True, intercept_scaling=1, class_weight=None, random_state=None, 
solver=’warn’, max_iter=100, multi_class=’warn’, verbose=0, warm_start=False, n_jobs=None)

下面我们对逻辑回归算法中的参数项做逐一说明:


‘penalty’:正则化惩罚项,字符型,‘l1’,‘l2’可选,默认‘l2’。
‘dual’:对偶或原始方法,bool类型,默认为False。对偶方法只用在求解线性多核(liblinear)的L2惩罚项上。当样本数量>样本特征的时候,dual通常设置为False。
‘tol’:停止求解的标准,float类型,默认为1e-4。就是求解到多少的时候,停止,认为已经求出最优解。
‘c’:正则化系数λ的倒数,float类型,默认为1.0。必须是正浮点型数。像SVM一样,越小的数值表示越强的正则化。
‘fit_intercept’:是否存在截距或偏差,bool类型,默认为True。
‘intercept_scaling’:仅在正则化项为’liblinear’,且fit_intercept设置为True时有用。float类型,默认为1。
‘class_weight’:用于表示分类模型中各类型的权重,可以是一个字典或者’balanced’字符串,默认为不输入,也就是不考虑权重,即为None。如果选择输入的话,可以选择balanced让算法库自己计算类型权重,或者自己输入各个类型的权重。举个例子,比如对于0,1的二元模型,我们可以定义class_weight={0:0.9,1:0.1},这样类型0的权重为90%,而类型1的权重为10%。如果class_weight选择balanced,那么算法库会根据训练样本量来计算权重。某种类型样本量越多,则权重越低,样本量越少,则权重越高。当class_weight为balanced时,类权重计算方法如下:n_samples / (n_classes * np.bincount(y))。n_samples为样本数,n_classes为类别数量,np.bincount(y)会输出每个类的样本数,例如y=[1,0,0,1,1],则np.bincount(y)=[2,3]。
那么class_weight有什么作用呢?
在分类模型中,我们经常会遇到两类问题:
第一种是误分类的代价很高。比如对合法用户和非法用户进行分类,将非法用户分类为合法用户的代价很高,我们宁愿将合法用户分类为非法用户,这时可以人工再甄别,但是却不愿将非法用户分类为合法用户。这时,我们可以适当提高非法用户的权重。
第二种是样本是高度失衡的,比如我们有合法用户和非法用户的二元样本数据10000条,里面合法用户有9995条,非法用户只有5条,如果我们不考虑权重,则我们可以将所有的测试集都预测为合法用户,这样预测准确率理论上有99.95%,但是却没有任何意义。这时,我们可以选择balanced,让算法库自动提高非法用户样本的权重。提高了某种分类的权重,相比不考虑权重,会有更多的样本分类划分到高权重的类别,从而可以解决上面两类问题。
‘random_state’:随机数种子,int类型,可选参数,默认为无,仅在正则化优化算法为sag,liblinear时有用。
‘solver’:优化算法选择参数,只有五个可选参数,即newton-cg,lbfgs,liblinear,sag,saga。默认为liblinear。solver参数决定了我们对逻辑回归损失函数的优化方法,有四种算法可以选择,分别是:
‘liblinear’:使用了开源的liblinear库实现,内部使用了坐标轴下降法来迭代优化损失函数。
‘lbfgs’:拟牛顿法的一种,利用损失函数二阶导数矩阵即海森矩阵来迭代优化损失函数。
‘newton-cg’:也是牛顿法家族的一种,利用损失函数二阶导数矩阵即海森矩阵来迭代优化损失函数。
‘sag’:即随机平均梯度下降,是梯度下降法的变种,和普通梯度下降法的区别是每次迭代仅仅用一部分的样本来计算梯度,适合于样本数据多的时候。
‘saga’:线性收敛的随机优化算法的的变重。
‘max_iter’:算法收敛最大迭代次数,int类型,默认为10。仅在正则化优化算法为newton-cg, sag和lbfgs才有用,算法收敛的最大迭代次数。
‘multi_class’:分类方式选择参数,str类型,可选参数为ovr和multinomial,默认为ovr。ovr即前面提到的one-vs-rest(OvR),而multinomial即前面提到的many-vs-many(MvM)。如果是二元逻辑回归,ovr和multinomial并没有任何区别,区别主要在多元逻辑回归上。
‘verbose’:日志冗长度,int类型。默认为0。就是不输出训练过程,1的时候偶尔输出结果,大于1,对于每个子模型都输出。
‘warm_start’:热启动参数,bool类型。默认为False。如果为True,则下一次训练是以追加树的形式进行(重新使用上一次的调用作为初始化。
‘n_jobs’:并行数。int类型,默认为1。1的时候,用CPU的一个内核运行程序,2的时候,用CPU的2个内核运行程序。为-1的时候,用所有CPU的内核运行程序。


应用案例演示
下面我们继续使用sklearn.datasets库中的iris数据集,来熟悉下LogisticsRegression算法的流程。

#导入我们要使用的python库
import numpy as np
from sklearn import datasets
from sklearn.linear_model import LogisticRegression

#导入iris数据集,并提取特征以及标签值
iris = datasets.load_iris()
X = iris.data
y = iris.target

#引入我们的逻辑回归算法并对数据进行训练
clf = LogisticRegression(random_state = 0,solver = 'lbfgs',multi_class = 'multinomial').fit(X,y)

#查看下算法的预测值
clf.predict(X[:2,:])
[0,0]
#查看下算法预测的概率值,结果为属于三个类别的概率值
clf.predict_proba(X[:2,:])
array([[9.81797141e-01, 1.82028445e-02, 1.44269293e-08],
       [9.71725476e-01, 2.82744937e-02, 3.01659208e-08]])
#查看算法的准确率
clf.score(X,y)
0.9733333333333334

LogisticRegression算法的优缺点
优点:简单易实现,运算效率高。
缺点:容易欠拟合,分类精度可能不高。

LogisticRegression算法中的参数非常多,目前我是没怎么理解这些参数,这个就需要我们在以后的应用当中去体会这些参数的作用,然后做优化调整。
参数的说明引用CSDN博客:https://blog.csdn.net/qq_42442369/article/details/86597151

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值