机器学习-专题详述

【参数】sklearn逻辑回归参数详解

作者 : 老饼 发表日期 : 2022-06-26 10:10:25 更新日期 : 2024-03-25 16:27:01
本站原创文章,转载请说明来自《老饼讲解-机器学习》www.bbbdata.com



本文讲解sklearn中逻辑回归的参数详解,方便使用时查阅

主要作为使用sklearn逻辑回归的查阅资料



   01. sklearn逻辑回归-入参说明   



本节介绍sklearn逻辑回归的入参

本节先描述完整的入参DEMO,再分类讲解各个入参的意义,最后提供所有入参的详细说明




     LogisticRegression完整入参Demo    


sklearn中使用LogisticRegression构建一个逻辑回归模型,
LogisticRegression的完整入参Demo如下:   
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)




     LogisticRegression 常用入参说明   


下面先按使用场景对LogisticRegression的入参进行分类讲解,
最后再附上所有入参的说明


 
常用入参
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即可                                                                         
 dual             :是否采用对偶方法。求解器liblinear的专用参数(且penalty=L2),一般不需要改    
 intercept_scaling:截距特征缩放。一般不需要改。用求解器“liblinear”且要正则化时需要调整    




   所有入参说明   

参数名称参数输入要求变量说明详细说明
penaltyl1,l2(默认),elasticnet,none惩罚项l1/l2即在损失函数中加l1/l2正则项。elasticnet即 l1,l2都加。none为不加。(注意:每个求解器支持的参数不同)
dualTrue,False(默认)是否采用对偶方法求解器liblinear的专用参数(且penalty=L2)
tol数值,默认le-4停止标准迭代中某些过程小于该数,则停止训练
C正数,默认1正则化强度的倒数设得越小正则化越强
fit_interceptTrue(默认),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值,则每次训练都会是一样的结果。
solvernewton-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_classauto(默认),ovr,multinomial多分类模式ovr:one-versus-rest,一对剩余。有K类,则训练K个模型,每个模型把第i类当一类,其余当一类。最后选择预测概率最高的一类作为预测类别。
multinomial:多项模式。此时使用逻辑回归的推广模型softmax回归进行多分类。
auto:如果二分类或者求解器为liblinear时,则为OVR,否则为multinomial
verbose整数,默认0输出训练过程数值越大,越详细。0则为不输出。
warm_startTrue/False是否热启动为True则沿用之前的解。liblinear不支持。
n_jobs整数,默认None使用CPU个数none一般代表1,-1代表使用所有处理器
l1_ratio[0,1]的小数,默认NoneElastic-Net中L1占比penalty设为Elastic-Net时专用参数,即Elastic-Net中l1的占比






   02. sklearn逻辑回归-方法与属性  


 

本节介绍由LogisticRegression创建的模型对象所拥有的方法及属性

 

 

    模型对象的方法   


训练的方法
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_:特征名称(特征名称为字符串时才会有该属性)           
 clf.n_iter_         :最终迭代次数                                                                         










 End 




联系老饼