我試圖優化我的SVM,使用交叉驗證來估計我的性能。在python中更改SVM的C參數
看來,改變C參數什麼都不做 - 怎麼會出現?
from sklearn import cross_validation
from sklearn import svm
for C in [0.1, 0.5, 1.0, 2.0, 4.0]:
clf = svm.SVC(kernel='linear', C=C)
scores = cross_validation.cross_val_score(clf, X, y, cv=6, n_jobs = -1)
print C, scores
結果是
> 0.1 [ 0.88188976 0.85826772 0.90118577 0.90909091 0.8972332 0.86561265]
> 0.5 [ 0.88188976 0.85826772 0.90118577 0.90909091 0.8972332 0.86561265]
> 1.0 [ 0.88188976 0.85826772 0.90118577 0.90909091 0.8972332 0.86561265]
> 2.0 [ 0.88188976 0.85826772 0.90118577 0.90909091 0.8972332 0.86561265]
> 4.0 [ 0.88188976 0.85826772 0.90118577 0.90909091 0.8972332 0.86561265]
喜!你有樣本X(和其他必要的)變量嗎?另外,如果你不使用'for',而是每次運行時都使用硬代碼C,你會看到相同的值嗎? (想知道在每個python會話中是否有奇怪的內存問題......) – arturomp
特徵向量非常大(大約4000條),所以很難給出一個樣本X.我會嘗試用更簡單的方法重新創建問題模型也許。 – eran
您應該使用GridSearchCV來處理您正在嘗試的操作。 http://scikit-learn.org/dev/modules/grid_search.html –