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方法来输出模型的指标。