SVM - 参数列表(六)

199 阅读6分钟

根据菜菜的课程进行整理,方便记忆理解

代码位置如下:

参数列表

参数说明
C浮点数,可不填,默认1.0
松弛系数的惩罚项系数。如果C值设定比较大,那SVC可能会选择边际较小的,能够更好地分类所有训练点的决策边界。如果C的设定值较小,那SVC会尽量最大化边界,决策功能会更简单, 但代价是训练的准确度。换句话说,C在SVM中的影响就像正则化参数对逻辑回归的影响
kernel字符,可不填,默认“rbf"
指定要在算法中使用的核函数类型,可以输入"linear" , "poly", "rbf", "sigmoid","precomputed"或者可调用对象(如函数,类等)。如果给出可调用对象,则这个对象将被用于从特征矩阵x预先计算内核矩阵:该矩阵应该是是一个(n_samples, n_samples)结构的数组
degree整数,可不填,默认3
多项式核函数的次数("poly"),如果核函数没有选择"poly",这个参数会被忽略
gamma浮点数,可不填,默认“auto"
核函数的系数,仅在参数Kernel的选项为’'rbf", "poly'’和”sigmoid'’的时候有效.
当输入“auto",自动使用1/(n_features)作为gamma的取值。
在sklearn 0.22版本中,将可输入”scale",则使用1 /(n_ features * X.std())作为gamma的取值
若输入”auto_deprecated",则表示没有传递明确的gamma值(不推荐使用)
coef0浮点数,可不填,默认二0.0
核函数中的独立项,它只在参数kernel为"poly"和"sigmoid"的时候有效。
shrinking布尔值,可不填,默认True
是否使用收缩启发式计算(shrinking heuristics),如果使用,有时可以加速最优化的计算进程, 加速迭代速度。
P.S.此参数的相关信息和讨论甚少,参数背后的真实面貌必须要阅读源码才能够解读,在解读之前大家谨慎使用
probability布尔值,可不填,默认False
是否启用概率估计。必须在调用fit之前启用它,启用此功能会减慢SVM的运算速度
tol浮点数,可不填,默认1e-3
停止迭代的容差
cache_size浮点数,可不填,默认200
指定该函数占用的缓存的大小(以MB为单位)
class_weight字典,"balanced",可不填
对svc,将类i的参数C设置为class_weight [i] * C。如果没有给出具体的class_weight,则所有类都占用相同的权重1。 "Balanced"模式使用y的值自动调整与输入数据中的类频率成反比的权重为n_samples/(n_classes*np.bincount(y))
verbose布尔值,默认False
启用详细输出。请注意,此设置利用libsvm中的‘’进程前运行时间设置”。如果启用则可能无法在多线程上下文中正常运行
max_iter整数,可不填,默认=1
最大迭代次数,输入’‘-1'‘表示没有限制
decision_function_shape可输入“ovo'', "ovr",默认“ovr"
对所有分类器,是否返回结构为(n_samples,n_classes)的one-rest-rest("ovr")决策函数,或者返回libsvm中原始的,结构为(n_samples), n_classes * (n_classes一1)/2)的one-vs-one('ovo')决策函数。但是一对一("ovo")总是在多分类问题中才使用。
在版本0:19中更改:decision_function_shape默认为’ovr',
版本0.17中的新功能:建议使用decision_ function_ shape= 'ovr'0
更改版本0.17:已弃用decision_function_shape="ovo"和None
random_state整数随机数种子,None,可不填,默认None
在对数据进行混洗以用于概率估计时使用的伪随机数种子生成器。
如果输入整数,则 random state是随机数生成器使用的随机数种子;
如果是RandomState实例则 random_state是随机数生成器;
如果为None,则随机数生成器是np.random使用的 Ra ndomState实例

属性列表

属性形态含义
support_类数组,结构 = [n_SV]支持向量的索引
support_vectors_类数组,结构 = [n_SV,n_features]支持向量本身
n_support_类数组,类型为int32,结构 = [n_class]每个类的支持向量数
dual_coef_数组,结构 = [n_class , n_SV]决策函数中支持向量的系数。对于多分类问题而言,是所有ovo模式分类器中的系数。多类情况下系数的布局不是非常重要
coef_数组,结构 = [n_class * (n _class - 1) /2 , n_features]赋予特征的权重(原始问题中的系数),这个属性仅适用于线性内核。 coef_是从dual_coef_和support_ vectors_派生的只读属性
intercept_数组,结构 = [n_class * (n _class - 1) /2]决策函数中的常量,在二维平面上是截距
fit_status_整数如果正确拟合,则显示0,否则为1(将发出警告)

接口列表

接口输入含义
decision_function特征矩阵X返回x中每个样本到划分数据集的超平面的距离,结构为(n_samples,)。如果 decision_function_shape ='ovr',则返回的矩阵结构为(n_samples, n_classes)
fit特征矩阵X,真实标签y[,n_sample_weight]根据给定的训练数据拟合SVM模型
如果x和y不是C顺序的,并且np.float64和x的连续数组不是 scipy.sparse.csr_matrix,则x和/或y可能会被复制。
如果X是密集数组,那么其他接口都将不支持稀疏矩阵作为输入
predict测试集矩阵X对x中的样本进行分类,返回的结构为(n_samples,)
score特征矩阵X,真实标签y[,n_sample_weight]返回给定测试数据和标签的平均准确度
在多标签分类中,这是子集精度。子集精度是一个非常严格的度量,因为子集精度要求为每个样本预测的每个标签都必须正确
set_params想要替换的新参数设置此估算器的参数
get_params无需输入获取此估算工具的参数
predict_log_proba特征矩阵X计算x中样本在所有可能分到的类下的对数概率。每个列按所有类出现在属性 classes_中的顺序排列。
模型需要在训练时计算概率信息:probability参数必须被设置为True
概率模型是使用交叉验证创建的;因此结果可能与通过预测获得的结果略有不同。此外,它可能在非常小的数据集上产生无意义的结果
predict_proba特征矩阵X计算x中样本在所有可能分到的类下的概率。每个列按所有类出现在属性 classes_中的顺序排列。
模型需要在训练时计算概率信息:probability参数必须被设置为True
概率模型是使用交叉验证创建的;因此结果可能与通过预测获得的结果略有不同。此外,它可能在非常小的数据集上产生无意义的结果