美文网首页
sklearn中逻辑回归(1.1.11)的实现

sklearn中逻辑回归(1.1.11)的实现

作者: 曦宝 | 来源:发表于2018-08-16 09:42 被阅读48次

    http://scikit-learn.org/stable/modules/linear_model.html#logistic-regression

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

    参数:
    1、penalty : str, ‘l1’ or ‘l2’, default: ‘l2’用来指定惩罚项。当solvers为‘newton-cg’,‘sag’和‘lbfgs’只支持l2惩罚项。在0.19版本中,solvers为SAGA时,惩罚项为l1 (允许‘multinomial’ + L1)。

    2、dual : bool, default: False。双重的或者原始的公式。双重的公式(dual=True),仅适用于liblinear求解器(solvers为liblinear)惩罚项为l2(penalty =l2)这种情况。当n_samples > n_features时,dual=False。言下之意就是保持它为默认值false不要改了。

    3、tol : float, default: 1e-4,迭代停止条件。

    4、C : float, default: 1.0,反正则化的强度。必须是一个float型正数。就像支持向量机一样,更小的值指定了更强的正则化。

    5、fit_intercept : bool, default: True,指定是否在决策函数中添加一个常数(即偏差或者截距)。

    6、intercept_scaling : float, default 1,仅当 “solvers=liblinear” 且 “fit_intercept=True” 时才有用。在这种情况下,x变成了[x, self.intercept_ scaling] ,也就是说,一个具有常数值的“合成”特性等于intercept_scaling,附加到实例向量中。截距变成了intercept_scaling * synthetic_feature_weight。
    注意:合成的特征权重和其他特征一样,都服从与l1/l2正则化。为了减少正则化对合成特征权重的影响,intercept_scaling必须增强。

    7、class_weight : dict or ‘balanced’, default: None,字典型或者“balanced”,默认None。权重和类别在{class_label: weight}这种形式上有联系,如果没有给出,所有类别的权重都是1。
    “balanced”模式,利用y值自动调整权重,和输入数据的类别的频率成反比。n_samples / (n_classes * np.bincount(y))。
    请注意,如果指定了sample_weight,这些权重将会和sample_weight相乘(通过fit方法)。
    在0.17版中,class_weight=’balanced’

    8、random_state : int, RandomState instance or None, optional, default: None,随机种子。当solver ==‘sag’or‘liblinear’时才有用。

    9、solver : {‘newton-cg’, ‘lbfgs’, ‘liblinear’, ‘sag’, ‘saga’},default: ‘liblinear’优化问题中使用的算法。
    1>对于小数据及来说,‘liblinear’是个不错的选择,相反’sag’和 ‘saga’对于大数据集来说更快。
    2>对于多分类问题,只有‘newton-cg’, ‘sag’, ‘saga’和‘lbfgs’ 可以处理多项损失。‘liblinear’仅限于one-versus-rest方案。
    3>‘newton-cg’,‘lbfgs’and‘sag’只能处理L2损失,‘liblinear’ 和‘saga’只能处理L1损失。
    请注意,“sag”和“saga”的快速收敛只在各个特征的数值范围差不多的情况下才能得到保证。

    10、max_iter : int, default: 100,仅在solver取值为 newton-cg, sag and lbfgs时,才起作用。使得solver收敛的最大迭代次数。

    11、multi_class : str, {‘ovr’,‘multinomial’}, default:‘ovr’,多分类的选项可以是ovr或者multinomial。如果选择“ovr”,那么每个label都被拟合为一个二分类问题。如果选择“multinomial”,那么最小损失,是整个概率分布拟合的多项式损失。对“solver=liblinear”不起作用。

    12、verbose : int, default: 0,对于solver=liblinear/lbfgs,可以设置任意一个正数作为冗长因子。

    13、warm_start : bool, default: False,当设置为True时,重用上次调用的解决方案来作为拟合的初始值,否则,擦除前面的解决方案。对liblinear解算器不起作用。

    14、n_jobs : int, default: 1,并行计算的CPU核数(仅当 multi_class=‘ovr’)。当solver=liblinear时,这个参数会被忽略,不论multi_class是否被指定,如果给值-1,那么将使用全部的核。

    属性:
    coef_ : array, shape (1, n_features) or (n_classes, n_features),决策函数中特征的系数,如果是二分类问题,coef_ 的shape是 (1, n_features)。

    intercept_ : array, shape (1,) or (n_classes,),添加到决策函数中的截距(又称偏差),如果fit_intercept被设为False,则intercept_ 被设为0。如果是二分类问题,则intercept_的shape是(1,)

    n_iter_ : array, shape (n_classes,) or (1, ),所有分类的实际迭代次数。

    方法:
    decision_function(X):预测样本的置信度得分。样本的置信分数是该样本与超平面的符号距离。

    densify():将系数矩阵转换为密集的数组形式。将coef_的返回值转换成numpy.ndarray 的形式。这是coef_的默认格式,也是拟合所需要的格式。因此这个方法的调用,只能在被预先系数的模型上,否则是无效的。

    fit(X, y[, sample_weight]),拟合。

    get_params([deep]),得到估计函数的参数。

    predict(X),预测。

    predict_log_proba(X),估计函数的对数概率。返回的所有类别的估计值,是按照label的类别排序的。

    predict_proba(X),估计概率。返回的所有类别的估计值,是按照label的类别排序的。

    score(X, y, sample_weight=None),返回给定测试集的feature和label的平均正确率。

    set_params(**params),给定估计函数的参数。

    sparsify(),将系数矩阵转换为稀疏格式。

    1、penalty,惩罚项l1,l2,acc会有轻微的变化,可以根据数据尝试改变,不同的solver支持不同的penalty,要协同调节。
    2、dual的true和false个solver和penalty都有关系,可以协同调整。
    3、tol,这里的迭代停止条件的默认值给出的是一个非常小的值,已经达到了收敛。(保持默认)
    4、C,C越小,指定了更强的正则化,根据数据调节吧。
    5、class_weight,默认None和‘balanced’,修改会有轻微变化。(保持默认)
    6、max_iter,给出的是一个比较大的迭代次数,已经达到了收敛。(保持默认)
    总体来说,逻辑回归涉及到的参数不是很多,调整了每次参数,发现对正确率的影响都不是很大。

    相关文章

      网友评论

          本文标题:sklearn中逻辑回归(1.1.11)的实现

          本文链接:https://www.haomeiwen.com/subject/kmlnbftx.html