http://scikit-learn.org/stable/modules/linear_model.html#logistic-regression
参数:
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,给出的是一个比较大的迭代次数,已经达到了收敛。(保持默认)
总体来说,逻辑回归涉及到的参数不是很多,调整了每次参数,发现对正确率的影响都不是很大。
网友评论