2016-04-11 66 views
0

我使用sklearn.svm.SVC對於分類問題之前。在對我的數據進行訓練之後,我想通過許多數值來循環偏差(即通常符號(w.x + b)SVM方程中的項b),以產生ROC曲線。 (我已經進行了交叉驗證並選擇了我的超參數,所以這是用於測試的)。改變偏置參數b在scikit SVM訓練後,預測

我試着玩.intercept_屬性,但這並沒有改變我從.predict()得到的東西......是否有其他方法來改變偏倚項?

我有可能恢復的支持向量,然後實現自己的.predict()功能,具有改變偏見,但是這似乎是一個相當嚴厲的辦法。

回答

2

我2年前有一個非常相同的問題。不幸的是,唯一的解決方案是自己做這件事。實現「預測」是非常直接的,它是Python中的單線程。不幸的是.intercept_實際上是一個複製內部使用截距(所述LIBSVM一個)的是。非常令人困惑的是,對於來自同一個庫的LinearSVC,這是不正確的,實際上你可以改變偏差(但是,顯然不能訪​​問內核)。

當然,你不必去深如計算內核重視自己。您仍然可以訪問「decision_function」,最終,它有內在的偏見。簡單地從決策功能中刪除舊的偏差,添加新的偏差,並採取標誌。這將是(高達偏差的符號):

def new_predict(clf, new_bias, X): 
    return np.sign(clf.decision_function(X) + clf.intercept_ - new_bias) 
相關問題