class 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=N
one,solver='liblinear',max_iter=100,multi_class='ovr',verbose=0,warm_start=False,n_jobs=1)
penalty
:正则化参数,可选l1或l2,分别对应l1正则化和l2正则化,默认为l2正则化。一般来说l2正则化可以处理大部分的过拟合问题,如果模型的泛化能力仍然较差或者模型的特征较多,需要过滤掉一些不重要的特征时,可考虑用l1正则化。penalty参数的选择还会影响损失函数优化算法即参数solver的选择,当使用l2正则化时,优化算法 {‘newton-cg’, ‘lbfgs’, ‘liblinear’, ‘sag’}都可以使用。当penalty是L1正则化的话,就只能选择‘liblinear’了。这是因为L1正则化的损失函数不是连续可导的,而{‘newton-cg’, ‘lbfgs’,‘sag’}这三种优化算法时都需要损失函数的一阶或者二阶连续导数,‘liblinear’则不需要。
监督算法在拟合过程中为了尽可能的兼顾每个数据,可能会导致模型泛化能力(模型应用到新样本的能力)较差,最直观的表现就是模型参数过于复杂,将这种情况成为模型的过拟合,一般发生在变量过多的时候。过拟合问题,一般有两种处理思路:
- 减少变量个数
保留更为重要的特征,舍弃一些不重要的特征,PCA
是比较主流处理方式。- 正则化
在模型的误差函数中加上惩罚项,使得新的误差函数:
当时称之为l1正则化;时称之为l2正则化,其实质就是当变量过多时,其范数会较大,此时通过调整使得惩罚项进一步变大,而为了保持误差函数最小,只能减小变量的参数的值,也就是所谓的对参数进行‘惩罚’,当足够大时,某些变量对应的参数减小到0或者接近0可以直接舍弃,起到减少模型中的变量个数的作用。
dual
:用来指明是否将原问题改成他的对偶问题,对偶问题可以理解成相反问题,比如原问题是求解最大值的线性规划,那么他的对偶问题就是转化为求解最小值的线性规划,适用于样本较小的数据集,因样本小时,计算复杂度较低。
tol
:残差收敛条件,默认是0.0001,也就是只需要收敛的时候两步只差<0.0001就停止,可以设置更大或更小。(逻辑回归模型的损失函数是残差平方和)
C
:正则化系数,正则化强度的导数,必须是一个正数,值越小,正则化强度越大,即防止过拟合的程度更大。
fit_intercept
:是否将截距/方差加入到决策模型中,默认为True。
class_weight
:class_weight是很重要的一个参数,是用来调节正负样本比例的,默认是值为None,也就是正负样本的权重是一样的,你可以以dict的形式给模型传入任意你认为合适的权重比,也可以直接指定一个值“balanced”,模型会根据正负样本的绝对数量比来设定模型最后结果的权重比。比如,有一数据集的正负样本绝对数量比为4:6,如果你给参数class_weight赋予balanced值,那么最后模型结果中,正负样本的权重比就会变成6:4。
random_state
:随机种子的设置,默认是None,如果设置了随机种子,那么每次使用的训练集和测试集都是一样的,这样不管你运行多少次,最后的准确率都是一样的;如果没有设置,那么每次都是不同的训练集和测试集,最后得出的准确率也是不一样的。
solver
:用来指明损失函数的优化方法,默认是‘liblinear’方法,sklearn自带了如下几种:
参数 | 说明 |
---|---|
liblinear | 使用了坐标轴下降法来迭代优化损失函数 |
lbfgs | 拟牛顿法的一种,利用损失函数二阶导数矩阵(海森矩阵)来迭代优化损失函数 |
newton-cg | 牛顿法的一种,利用损失函数二阶导数矩阵(海森矩阵)来迭代优化损失函数 |
sag | 随机平均下降梯度,是梯度下降法的变种一种线性收敛算法,和一般的梯度下降算法的区别是每次迭代只使用部分样本计算梯度,使用于样本数据较多的时候 |
max_iter
:算法收敛的最大迭代次数,即求取损失函数最小值的迭代次数,默认是100,
multi_class
:分类方法参数选择,‘ovr’和‘multinomial’两个值可以选择,默认值为‘ovr’,如果分类问题是二分类问题,那么这两个参数的效果是一样的,主要体现在多分类问题上。对于多分类问题,"ovr"分类方法是:针对每一类别进行判断时,都会把这个分类问题简化为是/非两类问题;而‘multinomial’是从众多类别中选出两个类别,对这两个类别进行判断,待判断完成后,再从剩下的类别中再选出两类进行判断,直至最后判断完成。
verbose
:英文意思是”冗余“,就是会输出一些模型运算过程中的东西(任务进程),默认是False,也就是不需要输出一些不重要的计算过程。
warm_start
:是否使用上次的模型结果作为初始化,默认是False,表示不使用。
n_jobs
:并行运算数量(核的数量),默认为1,如果设置为-1,则表示将电脑的cpu全部用上。
模型对象
coef_:返回各特征的系数,绝对值大小可以理解成特征重要性
intercept_:返回模型的截距
n_iter_:模型迭代次数
模型方法
decision_function(X):返回决策函数值(比如svm中的决策距离)
predict_proba(X):返回每个类别的概率值(有几类就返回几列值)
predict_log_proba(X):返回概率值的log值(即将概率取对数)
predict(X):返回预测结果值(0/1)
score(X, y=None):返回函数
get_params(deep=True):返回估计器的参数
set_params(**params):为估计器设置参数
网友评论