radial basis function(Gaussian)kernel莉撇,簡稱 RBF kernel觉义,定義為:
參數(shù) gamma與sigma成反比测摔,gamma越小,影響的訓練樣本越遠所坯,可以看作是支持向量影響半徑的倒數(shù)谆扎。
參數(shù) C 用來權衡模型準確性和復雜性,C值越小芹助,支持向量中的樣本數(shù)越少堂湖,使得決策面平滑,模型簡單而準確性下降周瞎;一個大的C值苗缩,模型可以選擇更多的樣本作為支持向量,準確性上升而變得更加復雜声诸。
模型對gamma參數(shù)非常敏感,如果gamma值太大退盯,支持向量的影響范圍只包括支持向量本身彼乌,沒有合適的正則化C來防止過擬合。
當gamma非常小時渊迁,模型將無法擬合數(shù)據(jù)的形狀和復雜度慰照,導致任何選定的支持向量的影響區(qū)域都包括整個訓練集,由此產生的模型類似于超平面集合組成的線性模型琉朽,將任意兩個高密度區(qū)域分開毒租。
在實踐中,用較低的C值限制支持向量的數(shù)量箱叁,有利于使用更少的內存和更快的預測墅垮。
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_))