关于sklearn.svm.SVC的参数的学习
class sklearn.svm.SVC(C=1.0, kernel='rbf', degree=3, gamma='auto', coef0=0.0, shrinking=True, probability=False, tol=0.001, cache_size=200, class_weight=None, verbose=False, max_iter=-1, decision_function_shape=None, random_state=None)
这是C-SVC,也叫软间隔SVM。
它的实现是基于libsvm。它的训练时间复杂度比样本的二次方还多,所以很难扩展到超过10000个样本的情况。
对于多分类问题是根据一对一模式解决的。
如果想要了解具体的关于核函数的数学公式,以及内部参数是怎样相互影响的,可以参考这个文档。核函数文档
解释函数中出现的参数:
- C
float类型,可选参数,默认为1.0
惩罚因子
(对间隔误差的容忍度,在某种程度上控制着分类器的复杂性,也被称为复杂性参数,也是一种正则化) - kernel
string类型,可选,默认为rbf,表示径向基函数
表示某种核函数类型。必须是 ‘linear’, ‘poly’, ‘rbf’, ‘sigmoid’, ‘precomputed’ ‘callable’的其中一种,有线性核函数,多项式,径向基等。
degree
int类型,可选,默认是3
表示多项式核函数的d, 和其他核函数无关。gamma
float类型,可选,默认是自动的。
这是‘poly’, ‘rbf’, ‘sigmoid’的核参数。如果是‘auto’,则值为1/特征数。coef0
float类型,可选,默认为0.0
在核函数中是独立的,是‘poly’, ‘sigmoid’函数中的 r 。probability
布尔类型,可选,默认为False
决定是否启用概率估计。需要在训练fit()模型时加上这个参数,之后才能用相关的方法:redict_proba和predict_log_proba。shrinking
布尔类型,可选,默认是True。
决定是否使用启发式收缩。我也是不知道指的是什么????tol
float类型,可选,默认是 1 e^-3
”Tolerance for stopping criterion.”不知道该怎么翻译了??cache_size
float类型,可选的
核函数缓存的大小,单位是MB。
不知道指的是什么??class_weight
{dict, ‘balanced’}类型,可选参数
设置每个类i的权重c,得到class_weight[i]*C。如果没有给这个值,那么所有类的权重为1。“balanced”模式使用自动适应的权重,是和输入数据中某类数据出现的频率的成反比的值。verbose
布尔类型,默认是False
启用详细的输出。请注意,此设置利用libsvm中的每个进程运行时设置,如果启用,可能无法在多线程环境中正常工作。max_iter
int类型,可选,默认为-1
求解器中的迭代次数限制,如果是-1表示没有限制。decision_function_shape
‘ovo’, ‘ovr’ or None, 默认是None类型。
决策函数的类型。多分类情况使用可以选择“ovo”(one vs one 的缩写),“ovr”(one vs rest的缩写),否则默认是None。
我也不清楚这是什么参数??-
random_state
int类型,seed, RandomState instance, or None (default)
伪随机数发生器的种子在混洗数据时用于概率估计。类的属性
support_ ,support_vectors_ ,n_support_ ,
都是和支持向量有关的属性值。
dual_coef_
决策函数中支持向量的系数。在多类问题中,该系数也是针对所有1对1分类器的。coef_
特征的权重,原始问题中系数,只在线性核函数中可用。-
intercept_
决策函数中常数。实例
>>> import numpy as np
>>> X = np.array([[-1, -1], [-2, -1], [1, 1], [2, 1]])
>>> y = np.array([1, 1, 2, 2])
>>> from sklearn.svm import SVC
>>> clf = SVC()
>>> clf.fit(X, y)
SVC(C=1.0, cache_size=200, class_weight=None, coef0=0.0,
decision_function_shape=None, degree=3, gamma='auto', kernel='rbf',
max_iter=-1, probability=False, random_state=None, shrinking=True,
tol=0.001, verbose=False)
>>> print(clf.predict([[-0.8, -1]]))
[1]