簡體   English   中英

在python中更改SVM的C參數

[英]Changing the C parameter of an SVM in python

我正在嘗試優化我的SVM,使用交叉驗證來估計我的表現。

似乎改變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]

這些似乎可以通過C值的微小變化來看待任何差異。 試試一套

C = [ 10**x for x in xrange(10) ]

為了檢查一切是否正常,您應該打印模型 ,而不僅僅是結果。 您的SVC對象包含有關支持向量的信息 - 只需打印它們即可看出, C中的更改確實會影響算法訓練SVM的方式。

對於線性內核,您可以打印:

print clf.coef_
print clf.intercept_

對於非線性內核:

print clf.dual_coef_
print clf.support_vectors_
print clf.intercept_

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM