详解 Scikit-learn 的 svm.SVC函数:支持向量机分类器

  • Post category:Python

Scikit-learn是一个著名的Python机器学习库,其中的SVM支持向量机算法(SVC)可以用于进行分类、回归以及异常检测等任务。它的使用方法如下:

1. 导入库

首先,我们需要导入必要的库:

from sklearn import svm

2. 创建模型

然后,我们需要创建一个支持向量机模型,并设定相应的参数。例如,以下是一个默认参数的SVM对于二元分类任务的创建方法:

clf = svm.SVC(kernel='rbf', C=1.0, gamma='scale')

这句话的含义是创建一个使用rbf核函数(径向基函数核)的SVM分类器,并设定C参数的值为1.0, gamma为“auto”,用来确定核函数的特异性。这些参数都可以在模型创建的时候进行设定。

3. 训练模型

创建完模型后,我们需要使用训练集对模型进行训练,方法如下:

clf.fit(X_train, y_train)

其中, X_train 是训练集的特征, y_train 是训练集的标签。 这个过程会使用训练集对模型进行优化,以获得一个更好的分类器。

4. 对测试集进行预测

训练完模型后,我们可以用测试集来评估模型的性能:

y_predict = clf.predict(X_test)

这里,y_predict 是测试集的预测结果。

5. 评价模型

评估模型通常需要考虑一些指标,其中包括准确率、召回率以及F1分数等。我们可以使用以下代码来计算这些指标:

from sklearn.metrics import classification_report
print(classification_report(y_test, y_predict))

例如,以下是一个Bowling数据集的示例:

import numpy as np
from sklearn.model_selection import train_test_split
from sklearn import datasets, svm
from sklearn.metrics import classification_report

# 加载数据集
X , y = datasets.load_breast_cancer(return_X_y=True)

# 数据集划分
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3)

# 创建模型
clf = svm.SVC(kernel='rbf', C=1.0, gamma='scale')

# 训练模型
clf.fit(X_train, y_train)

# 预测模型
y_predict = clf.predict(X_test)

# 评价模型
print(classification_report(y_test, y_predict))

以上代码用于加载Breast Cancer数据集,并使用SVM模型对其进行分类。在这个例子中,SVM的可选参数设置如下:

  • kernel = ‘rbf’ 即核函数采用径向基函数(kernel function),默认值是 ‘rbf’
  • C=1.0 即惩罚参数(C parameter)指定余量的惩罚系数。默认为1.0
  • gamma=’scale’ 即gamma参数指定了核函数的特异性。 默认是'scale'的情况下1 /(n_features * X.var())。

在该例子中,我们使用 train_test_split 方法将数据集划分为训练集和测试集。随后对于训练集和测试集分别使用fit方法和predict方法对其进行训练和预测。最后,我们使用classification_report方法来输出模型的指标。