Svm

多類分類中 Scikit SVM 的輸出總是給出相同的標籤

  • November 24, 2014

我目前正在使用 Scikit learn 和以下代碼:

clf = svm.SVC(C=1.0, tol=1e-10, cache_size=600, kernel='rbf', gamma=0.0, 
             class_weight='auto')

然後對一組具有 7 個不同標籤的數據進行擬合和預測。我得到了一個奇怪的輸出。無論我使用哪種交叉驗證技術,驗證集上的預測標籤總是標籤 7。

我嘗試了一些其他參數,包括完整的默認參數 ( svm.SVC()),但只要我使用的內核方法是rbf而不是,poly否則linear它就不起作用,而它對polyand非常有效linear

此外,我已經嘗試過對訓練數據而不是驗證數據進行預測,它非常適合。

有沒有人以前見過這種問題並且知道這裡發生了什麼?

我從不詳細查看我的班級分佈,但我知道應該是 30% 左右是 7,14% 是 4。

我什至嘗試了手動 1-vs-rest 實現,但仍然沒有幫助。

一個可能的原因是您沒有調整模型。你需要找到好的價值觀和. 在您的情況下,默認值結果很糟糕,這導致了總是產生某個類的瑣碎模型。如果一個類的實例比其他類多得多,這尤其常見。你的班級分佈是什麼?

scikit-learn 的超參數搜索功能有限,但您可以將它與像Optunity這樣的調優庫一起使用。此處提供了有關使用 Optunity 調整 scikit-learn SVC 的示例。

免責聲明:我是 Optunity 的首席開發人員。

引用自:https://stats.stackexchange.com/questions/125353

comments powered by Disqus