本文共 1324 字,大约阅读时间需要 4 分钟。
对于支持向量机原理,可参考该系列博客()。
本次实战使用前文中的乳腺癌数据集,如图所示。
from sklearn.datasets import load_breast_cancercancer = load_breast_cancer()print(cancer.DESCR)
X = cancer.datay = cancer.targetfrom sklearn.model_selection import train_test_splitX_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=33)
支持向量机算法使用sklearn.svm 模块中的SVC方法。常用的参数如下:
这里的数据较小,使用高斯核函数很容易过拟合:
from sklearn.svm import SVCclf = SVC(C=1.0, kernel='rbf', gamma=0.1)clf.fit(X_train, y_train)clf.score(X_train, y_train)clf.score(X_test, y_test)# result# 1.0# 0.6228070175438597
当然我们也可以通过网格搜索获得适合的gamma值。
import numpy as npfrom sklearn.model_selection import GridSearchCVparam_grid = {'gamma':np.linspace(0, 0.0003, 30)}clf = GridSearchCV(SVC(), param_grid, cv=5)clf.fit(X, y)print(clf.best_params_, clf.best_score_)# result# {'gamma': 0.00011379310344827585} 0.936731107206
最后,使用多项式核函数拟合:
clf = SVC(C=1.0, kernel='poly', degree=2)clf.fit(X_train, y_train)train_score = clf.score(X_train, y_train)test_score = clf.score(X_test, y_test)print(train_score, test_score)# result# 0.98021978022 0.964912280702
转载地址:http://rafva.baihongyu.com/