radial basis function(Gaussian)kernel,简称 RBF kernel,定义为:
令 则:参数 gamma与sigma成反比,gamma越小,影响的训练样本越远,可以看作是支持向量影响半径的倒数。
参数 C 用来权衡模型准确性和复杂性,C值越小,支持向量中的样本数越少,使得决策面平滑,模型简单而准确性下降;一个大的C值,模型可以选择更多的样本作为支持向量,准确性上升而变得更加复杂。
模型对gamma参数非常敏感,如果gamma值太大,支持向量的影响范围只包括支持向量本身,没有合适的正则化C来防止过拟合。
当gamma非常小时,模型将无法拟合数据的形状和复杂度,导致任何选定的支持向量的影响区域都包括整个训练集,由此产生的模型类似于超平面集合组成的线性模型,将任意两个高密度区域分开。
在实践中,用较低的C值限制支持向量的数量,有利于使用更少的内存和更快的预测。
import numpy as np
from sklearn.svm import SVC
from sklearn.preprocessing import StandardScaler
from sklearn.datasets import load_iris
from sklearn.model_selection import StratifiedShuffleSplit
from sklearn.model_selection import GridSearchCV
iris=load_iris()
x=iris.data
y=iris.target
x=StandardScaler().fit_transform(x)
C_range=np.logspace(-2,10,13)
gamma_range=np.logspace(-9,3,13)
param_grid=dict(gamma=gamma_range,C=C_range)
cv=StratifiedShuffleSplit(n_splits=5,test_size=0.2,random_state=42)
grid=GridSearchCV(SVC(),param_grid=param_grid,cv=cv)
grid.fit(x,y)
print("The best parameters are %s with a score of %0.2f" % (grid.best_params_,grid.best_score_))
网友评论