SVM算法的参数

1. c : float参数,默认值为1.0

  • 错误项的惩罚系数。

  • c越大,即对分错样本的惩罚程度越大,因此在训练样本中准确率越高,但是泛化能力降低,也就是对测试数据的分类准确率降低。

  • 相反,减小c的话,允许训练样本中有一些误分类错误样本,泛化能力强。

  • 对于训练样本带有噪声的情况,一般采用减小c的方法,把训练样本集中错误分类的样本作为噪声2.

2. kernel : str参数,默认为‘rbf’

算法中提供的核函数类型,可选参数有:

  • linear:线性核函数
  • poly:多项式核函数
  • rbf:径像核函数/高斯核
  • sigmod:sigmod核函数
  • precomputed:核矩阵。表示自己提前计算好核函数矩阵,算法内部就不再用核函数去计算核矩阵,而是直接用我们给的矩阵。

SVM算法的参数

除了上面限定的核函数外,还可以给出自己定义的核函数,内部就是用自己定义的核函数来计算核矩阵。

3. degree : int型,默认为3

  • 这个参数只对多项式核函数有用,是指多项式核函数的阶数n。如果给的核函数参数是其他核函数,则会自动忽略该参数。

4. gamma :float参数,默认为auto

  • 核函数系数,只对rbf,poly,sigmod有效。
  • 如果gamma为auto,代表其值为样本特征数的倒数,即1/n_features

5. coef0 : float参数,默认值为0

  • 核函数中的独立项,对poly和sigmod核函数有用,是指其中的参数c。

6. probability : bool参数,默认为False

  • 是否启用概率估计。这必须在调用fit之前启用,会使fit()方法速度变慢。

7. shrinking : bool参数,默认为Ture

  • 是否采用启发式收缩方式。

8. tol :float参数,默认为1e^-3

  • SVM停止训练的误差精度

9. cache_size : float参数,默认为200

  • 指定训练所需要的的内存,以MB为单位,默认为200MB。

10. class_weight : 字典类型或者是balance字符串,默认为None

  • 给每个类别分别设置不同的惩罚参数c,如果没有给,所有类别都是默认值。
  • 如果给定参数blance,则使用y的值自动调整与输入数据中的类的频率成反比的比重。

11. verbose : bool参数,默认为false

  • 是否启用详细输出。此设置利用libsvm中的每个进程运行时设置,如果启用,可能无法在多线程上下文中使用,一般情况下设置为False。

12. max_iter : int参数,默认为-1

  • 最大迭代次数,如果为-1表示不受限制。

13. random_state :int参数,默认为None

  • 伪随机数发生器的种子,在混洗数据时用于概率估计。

14. fit()方法 :

  • 用于训练svm,具体参数已经在定义svc对象时给出,这时候只需要给出数据集x和x对应的标签y。

15. predict()方法 :

基于以上的训练,对预测样本T进行类别预测,因此只需要接收一个测试集T,该函数返回一个数组表示各测试样本的类别。

16. 属性有哪些

  • svc.n_support_:各类各有多少个支持向量
  • svc.support_:各类的支持向量在训练样本中的索引
  • svc.support_vectors_:各类所有的支持向量。

SVM算法中各标签对应精确率、召回率、f1score

1. TP FP TN FN

  • TP(ture positives):预测为正样本,实际也为正样本的特征数;
  • FP(Flase positives):预测为正样本,实际为负样本的特征数;
  • TN(true negatives):预测为负样本,实际也为负样本的特征数;
  • FN(false negatives):预测为负样本,实际为正样本的特征数。

2. 精确率(precision)

  • P = TP/(TP+FP)

3. 召回率(recall)

  • R = TP/(TP+FN)

4. 特异性(specificity)

  • S = TN/(FP+TN)

5. 用F1值综合评估精确率和召回率

SVM算法的参数

SVM算法的参数


如何画出超平面

1. 计算分割超平面

b=clf_svc.intercept_

w=clf_svc.coef_

2. 查看决策函数:decision_function中每一列的值代表距离各类别的距离

print('decision_function:\n', clf_svc.decision_function(df_x))

SVM算法的参数

3. predict()函数:返回一个数组表示各测试样本的类别

print('\npredict:\n', clf_svc.predict(df_x))

SVM算法的参数