-
tol
:浮点数,指定终止迭代的阈值。fit_intercept
:一个布尔值,指定是否需要计算截距项。如果为False
,那么不会计算截距项。当 , 时, 可以设置
fit_intercept=False
。intercept_scaling
:一个浮点数,用于缩放截距项的正则化项的影响。当采用
fit_intercept
时,相当于人造一个特征出来,该特征恒为1
,其权重为 。在计算正则化项的时候,该人造特征也被考虑了。为了降低这个人造特征的影响,需要提供
intercept_scaling
。class_weight
:一个字典或者字符串'balanced'
,指定每个类别的权重。- 如果为字典:则字典给出了每个分类的权重。如
{class_label: weight}
。 - 如果为字符串
'balanced'
:则每个分类的权重与该分类在样本集中出现的频率成反比。 - 如果未指定,则每个分类的权重都为
1
。
- 如果为字典:则字典给出了每个分类的权重。如
LinearSVC
是根据liblinear
实现的,它可以用于二类分类,也可以用于多类分类问题(此时是根据one-vs-rest
原则来分类)。线性支持向量机
LinearSVC
:penalty
:字符串,指定'l1'
或者'l2'
,罚项的范数。默认为'l2'
(它是标准SVC采用的)。loss
:一个字符串,表示损失函数。可以为:'hinge'
:此时为合页损失函数(它是标准 SVM 的损失函数)。'squared_hinge'
:合页损失函数的平方。
dual
:一个布尔值。如果为True
,则解决对偶问题;如果是False
,则解决原始问题。当n_samples > n_features
时,倾向于采用False
。tol
:一个浮点数,指定终止迭代的阈值。C
:一个浮点数,罚项系数。multi_class
:一个字符串,指定多类分类问题的策略。'ovr'
:采用one-vs-rest
分类策略。'crammer_singer'
:多类联合分类,很少用。因为它计算量大,而且精度不会更佳。此时忽略loss,penalty,dual
项。
fit_intercept
:一个布尔值,指定是否需要计算截距项。intercept_scaling
:一个浮点数,用于缩放截距项的正则化项的影响。class_weight
: 一个字典或者字符串'balanced'
,指定每个类别的权重。verbose
:一个正数。用于开启/关闭迭代中间输出日志功能。random_state
: 指定随机数种子。max_iter
: 一个整数,指定最大迭代次数。
模型属性:
coef_
:权重向量。intercept_
:截距值。
模型方法:
fit(X, y)
:训练模型。predict(X)
:用模型进行预测,返回预测值。score(X,y[,sample_weight])
:返回模型的预测性能得分。
下面的示例给出了不同的
C
值对模型预测能力的影响。C
衡量了误分类点的重要性,C
越大则误分类点越重要。为了便于观察将
x
轴以对数表示。可以看到当C
较小时,误分类点重要性较低,此时误分类点较多,分类器性能较差。
2.2 SVC
SVC
是根据libsvm
实现的,其训练的时间复杂度是采样点数量的平方。它可以用于二类分类,也可以用于多类分类问题(此时默认是根据
one-vs-rest
原则来分类)。模型属性:
support_
:一个数组, 形状为[n_SV]
,给出了支持向量的下标。support_vectors_
: 一个数组, 形状为[n_SV, n_features]
,给出了支持向量。n_support_
: 一个数组, 形状为[n_class]
,给出了每一个分类的支持向量的个数。dual_coef_
: 一个数组,形状为[n_class-1, n_SV]
。给出了对偶问题中,每个支持向量的系数。-
- 它只有在
linear kernel
中有效。 - 它是个只读的属性。它是从 和
support_vectors_
计算而来。
- 它只有在
intercept_
: 一个数组,形状为[n_class * (n_class-1) / 2]
,给出了决策函数中的常数项。
模型方法:
fit(X, y[, sample_weight])
:训练模型。score(X,y[,sample_weight])
:返回模型的预测性能得分。predict_log_proba(X)
:返回一个数组,数组的元素依次是X
预测为各个类别的概率的对数值。predict_proba(X)
:返回一个数组,数组的元素依次是X
预测为各个类别的概率值 。
NuSVC: Nu-Support Vector Classificatio
与SVC
相似,但是用一个参数来控制了支持向量的个数。它是基于libsvm
来实现的。NuSVC
支持向量机:nu
: 一个浮点数,取值范围为(0,1]
, 默认为0.5。它控制训练误差与支持向量的比值,间接控制了支持向量的个数。- 其它参数参考
SVC
。
模型属性:参考
SVC
。模型方法:参考
SVC
。
2.4 LinearSVR
LinearSVR
是根据liblinear
实现的。线性支持向量回归
LinearSVR
:class sklearn.svm.LinearSVR(epsilon=0.0, tol=0.0001, C=1.0, loss='epsilon_insensitive',
fit_intercept=True, intercept_scaling=1.0, dual=True, verbose=0, random_state=None,
max_iter=1000)
epsilon
:一个浮点数,表示 值。loss
:字符串。表示损失函数。可以为:'epsilon_insensitive'
:此时损失函数为 (标准的SVR
)'squared_epsilon_insensitive'
:此时损失函数为
- 其它参数参考
LinearSVC
。
模型属性:参考
LinearSVC
。模型方法:参考
LinearSVC
。下面的示例给出了不同的 值对模型预测能力的影响。
为了方便观看将
x
轴转换成对数坐标。可以看到预测准确率随着 下降。下面的示例给出了不同的
C
值对模型预测能力的影响。为了方便观看将
x
轴转换成对数坐标。可以看到预测准确率随着 增大而上升。说明越看重误分类点,则预测的越准确。
SVR
是根据libsvm
实现的。支持向量回归
SVR
:参数:参考
SVC
。模型属性:参考
SVC
。模型方法:参考
SVC
。
2.6 NuSVR
NuSVR
是根据libsvm
实现的。支持向量回归
NuSVR
:class sklearn.svm.NuSVR(nu=0.5, C=1.0, kernel='rbf', degree=3, gamma='auto', coef0=0.0,
shrinking=True, tol=0.001, cache_size=200, verbose=False, max_iter=-1)
C
:一个浮点数,罚项系数。- 其它参数参考
NuSVC
。
模型属性:参考
NuSVC
。模型方法:参考
NuSVC
。
OneClassSVM
是根据libsvm
实现的。支持向量描述
OneClassSVM
:参数:参考
NuSVC
。模型方法:
predict(X)
:用模型进行预测,返回预测值。每个预测值要么是+1
要么是-1
。