大家好,欢迎来到IT知识分享网。
《老饼讲解机器学习》https://www.bbbdata.com/text/49
目录
本文讲述sklearn逻辑回归参数详解
一.入参说明
完整入参:
clf = LogisticRegression(penalty='l2',dual=False, tol=0.0001, C=1.0, fit_intercept=True, intercept_scaling=1, class_weight=None, random_state=None, solver='lbfgs', max_iter=100, multi_class='auto', verbose=0, warm_start=False, n_jobs=None, l1_ratio=None)
(一)入参分类与使用
常用入参:
random_state:随机种子。需要每次训练都一样时,就需要设置该参数。
class_weight:各类别样本的权重。样本需要加权时,使用该参数。
fit_intercept:是否需要截距b。一般都需要。
max_iter:最大迭代次数。
tol:停止标准。如果求解不理想,可尝试设置更小的值。
正则化相关参数:
penalty:惩罚项,如果需要正则化,则用默认为L2,不需要则设为None。特殊的,要用L1正则:修改对应的solver。如果L1和L2都用,则改为elasticnet,修改solver和l1_ratio.
C:正则化强度的倒数
solver:求解器,设置正则化时,需要使用支持正则化的求解器。
l1_ratio:Elastic-Net中L1占比。使用Elastic-Net时才需设置。
其它冷参数:
multi_class:多分类模式。一般不需修改,用auto就行
verbose:输出训练过程。一般不打印,不需修改
warm_start:是否热启动。一般不需热启动。不需修改。
n_jobs:使用CPU个数。用默认1个CPU即可。
intercept_scaling:截距特征缩放。一般不需要改。用求解器“liblinear”且要正则化时需要调整。
dual:是否采用对偶方法。求解器liblinear的专用参数(且penalty=L2),一般不需要改。
(二)入参详细列表
参数名称 | 参数输入要求 | 变量说明 | 详细说明 |
---|---|---|---|
penalty | l1,l2(默认),elasticnet,none | 惩罚项 | l1/l2即在损失函数中加l1/l2正则项。elasticnet即 l1,l2都加。none为不加。(注意:每个求解器支持的参数不同) |
dual | True,False(默认) | 是否采用对偶方法 | 求解器liblinear的专用参数(且penalty=L2) |
tol | 数值,默认le-4 | 停止标准 | 迭代中某些过程小于该数,则停止训练 |
C | 正数,默认1 | 正则化强度的倒数 | 设得越小正则化越强 |
fit_intercept | True(默认),False | 是否需要截距b | 如果为False,则b强设为0,模型中wx+b变成wx |
intercept_scaling | 数值,默认1 | 截距特征缩放 | 求解器用“liblinear”才需要。liblinear会把b也添加到正则项,为避免b的取值受正则化影响过大,正则化取的是b/intercept_scaling,可预设intercept_scaling,调整b受正则化的影响。 |
class_weight | 字典(多输出为字典列表) ,balanced,None(默认) |
各类别样本的权重 | None:样本权重全为1 字典:{0:1,1:2}代表0类的样本权重为1,1类的样本权重为2.(多输出时,格式为:[{0:1,1:2},{0:1,1:2}]) balanced:把总权重n_samples均分给各类,各类再均分给各个样本。例:有3个类别,10个样本,则每个类别平均权重为10/3,平均到某个类别的权重就为 (10/3)/类别样本数。公式:class_weight = n_samples / (n_classes * np.bincount(y))。 |
random_state | 整数,随机数实例,None(默认) | 训练过程中的随机种子。 | 如果设定为非None值,则每次训练都会是一样的结果。 |
solver | newton-cg,lbfgs(默认), liblinear,sag,saga |
求解器,即求解方法 | 求解器支持的惩罚项: newton-cg : [‘l2’, ‘none’] lbfgs:[‘l2’, ‘none’] liblinear: [‘l1’, ‘l2’](仅支持OVR分类) sag: [‘l2’, ‘none’] saga: [‘elasticnet’, ‘l1’, ‘l2’, ‘none’] |
max_iter | 整数,默认100 | 最大迭代次数 | – |
multi_class | auto(默认),ovr,multinomial | 多分类模式 | ovr:one-versus-rest,一对剩余。有K类,则训练K个模型,每个模型把第i类当一类,其余当一类。最后选择预测概率最高的一类作为预测类别。 multinomial:多项模式。此时使用逻辑回归的推广模型softmax回归进行多分类。 auto:如果二分类或者求解器为liblinear时,则为OVR,否则为multinomial |
verbose | 整数,默认0 | 输出训练过程 | 数值越大,越详细。0则为不输出。 |
warm_start | True/False | 是否热启动 | 为True则沿用之前的解。liblinear不支持。 |
n_jobs | 整数,默认None | 使用CPU个数 | none一般代表1,-1代表使用所有处理器 |
l1_ratio | [0,1]的小数,默认None | Elastic-Net中L1占比 | penalty设为Elastic-Net时专用参数,即Elastic-Net中l1的占比 |
二.模型训练
clf.fix(X,y) :训练模型
三.模型训练后的方法与属性
(一) 方法
clf.predict(X) :预测X的类别
clf.predict_proba(X) :预测X属于各类的概率
clf.predict_log_proba(X) :相当于 np.log(clf.predict_proba())
clf.decision_function(X) :输出wx+b部分
clf.score(X,y) :返回准确率,即模型预测值与y不同的个数占比(支持样本权重:clf.score(X,y,sample_weight=sample_weight))
(二) 属性
clf.coef_ :模型系数
clf.intercept_:模型截距
clf.classes_ :类别编号
clf.n_features_in_:特征个数。
clf.feature_names_in_:特征名称。(特征名称为字符串时才会有该属性)
相关文章
《逻辑回归过拟合分析与解决方案》
《sklearn:一个简单的逻辑回归例子》
《sklearn提取逻辑回归模型系数》
《逻辑回归建模完整流程》
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/145756.html