LogisticRegression参数

sklearn.linear_model 文档

http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html

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 : str,‘l1’或’l2’,默认:‘l2’
    用于指定正则化中使用的规范。 ‘newton-cg’,'sag’和’lbfgs’解算器只支持l2正则化。
    一般penalty选择L2正则化就够了。如果选择L2正则化发现还是过拟合,即预测效果差的时候,可以考虑L1正则化。
    如果模型的特征非常多,希望一些不重要的特征系数归零,从而让模型系数稀疏化的话,也可以使用L1正则化。

  • solver : str,{‘newton-cg’,‘lbfgs’,‘liblinear’,‘sag’,‘saga’},默认:‘liblinear’。
    用于优化问题的算法。
    对于小数据集,‘liblinear’是一个不错的选择,而’sag’和’saga’对于大数据集来说更快。
    对于多类问题,只有’newton-cg’,‘sag’,'saga’和’lbfgs’处理多项损失。
    ‘newton-cg’,'lbfgs’和’sag’只处理L2 penalty,而’liblinear’和’saga’处理L1 penalty。

  • multi_class : str,{‘ovr’,‘multinomial’,‘auto’},默认值:‘ovr’
    multi_class参数决定了我们分类方式的选择,有ovr和multinomial两个值可以选择,默认是 ovr。
    ovr即one-vs-rest(OvR),而multinomial即many-vs-many(MvM)。如果是二元逻辑回归,ovr和multinomial并没有任何区别,区别主要在多元逻辑回归上。

    OvR的思想很简单,无论你是多少元逻辑回归,我们都可以看做二元逻辑回归。具体做法是,对于第K类的分类决策,我们把所有第K类的样本作为正例,除了第K类样本以外的所有样本都作为负例,然后在上面做二元逻辑回归,得到第K类的分类模型。其他类的分类模型获得以此类推。

    而MvM则相对复杂,这里举MvM的特例one-vs-one(OvO)作讲解。如果模型有T类,我们每次在所有的T类样本里面选择两类样本出来,不妨记为T1类和T2类,把所有的输出为T1和T2的样本放在一起,把T1作为正例,T2作为负例,进行二元逻辑回归,得到模型参数。我们一共需要T(T-1)/2次分类。

    从上面的描述可以看出OvR相对简单,但分类效果相对略差(这里指大多数样本分布情况,某些样本分布下OvR可能更好)。而MvM分类相对精确,但是分类速度没有OvR快。

    如果选择了ovr,则4种损失函数的优化方法liblinear,newton-cg, lbfgs和sag都可以选择。但是如果选择了multinomial,则只能选择newton-cg, lbfgs和sag了。

  • C : float,默认值:1.0

  • dual : bool,默认值:False
    当n_samples> n_features时,首选dual = False。

  • max_iter : int,默认值:100

  • n_jobs : int或None,可选(默认=无)
    如果multi_class =‘ovr’“,则在对类进行并行化时使用的CPU核心数。solver无论是否指定了“multi_class”,当设置为“liblinear” 时,将忽略此参数。-1表示使用所有处理器。

from sklearn.linear_model import LogisticRegression
clf = LogisticRegression(random_state=0, solver='lbfgs',
                               multi_class='multinomial')

clf.fit(X, y) 


clf.predict(X[:2, :]
clf.predict_proba(X[:2, :])

你可能感兴趣的:(机器学习)