2013-03-01 40 views
2

我想在scikit-learn中培訓svm.sparse.SVC。目前,特徵向量的維數約爲70萬,用於訓練的特徵向量的數量爲20k。我使用csr稀疏矩陣提供輸入,因爲在每個特徵向量中只有大約500個維度是非零的。該代碼自過去5個小時開始運行。有沒有估計需要多少時間?有什麼方法可以更快地完成培訓嗎?內核是線性的。svm.sparse.SVC花了很多時間去接受培訓

回答

3

嘗試使用sklearn.svm.LinearSVC。這也有一個線性內核,但底層的實現是liblinear,這被稱爲更快。考慮到這一點,你的數據集不是很小,所以即使這個分類器可能需要一段時間。第一個註釋後


編輯: 在,我認爲你有幾種選擇,這兩者都不是完美的:

  • 非解決方案選項:收工希望的svm.sparse.SVC培訓明天早上完成。如果可以,請購買更好的電腦。
  • 作弊選項:放棄概率。你沒有告訴我們你的問題是什麼,所以它們可能不是必需的。
  • 反牆式選項:如果您絕對需要概率並且事情必須運行得更快,請使用不同的分類器。選項包括sklearn.naive_bayes.*sklearn.linear_model.LogisticRegression。等等。這些培訓要快得多,但是你付出的代價精確度有所降低。
+0

我需要概率估計值,LinearSVC不提供那個(predict_proba函數)。現在有什麼建議? – user2115183 2013-03-01 10:21:11

+1

svm.sparse.SVC具有二次到三次的複雜度,因此不能用於超過〜50000k個採樣的數據集。更好的計算機不能解決從二次到立方的複雜性。 – ogrisel 2013-03-01 11:07:24

+3

只是爲了製作可擴展的分類器模型w.r.t.樣本數量爲:sklearn.linear_model.LogisticRegression,sklearn.svm.LinearSVC,sklearn.linear_model.SGDClassifier(及相關)和sklearn.bayes.MultinomialNB。 – ogrisel 2013-03-01 11:10:30