2015-12-17 35 views
2

我正在使用支持矢量機器進行項目手寫模式識別(字母)。我總共有26類,但我無法使用支持向量機在R中進行分類。只有當它是二進制類時,我才能對圖像進行分類。如何在R中使用SVM Multiclass SVM如何在R中構建多類SVM?

我正在使用「e1071」包。

在此先感謝。

+0

你吃過看看http://stackoverflow.com/questions/22009871/how-to-perform-multi-class-classification-using-svm-of-e1071-package-in-r? – Vongo

+0

你也可以想讀此:http://www.jstatsoft.org/article/view/v015i09/v15i09.pdf – Vongo

回答

1

還有多類SVM在e1071沒有直接等同。此外,所有使用SVM進行多類分類的方法都使用「一對一休息」或編碼等技術。下面是詳細介紹最常用的方法的參考... http://arxiv.org/ftp/arxiv/papers/0802/0802.2411.pdf

如果你想使用e1071用於多類SVM,你最好可以創建26個SVM模型,每一個類,並使用概率分數來預測。這種方法應該足夠用於手寫模式識別。

+0

感謝您的答覆:)我試圖創建一個使用e1071包,我所面臨的問題26個SVM模型是,當我在測試中訓練類1圖像的類1圖像時,我產生了一個錯誤,如**「模型是空的」**。如何爲每個班級創建模型並預測使用概率分數? –

+0

@AbiramiM您必須在模型中輸入所有圖像,並將建模的類標記爲1或0,這將是您的因變量。您必須爲所有類別分別執行此操作,並且每次輸入所有圖像。 – Gaurav

3

對於多類分類器,您可以獲得每個類的概率。您可以在'predict'api中訓練&模型時設置'probability = TRUE'。這會給你每個班級的概率。以下是虹膜數據集示例代碼:

data(iris) 
attach(iris) 
x <- subset(iris, select = -Species) 
y <- Species 
model <- svm(x, y, probability = TRUE) 
pred_prob <- predict(model, x, decision.values = TRUE, probability = TRUE) 

使用上面的代碼,'pred_prob'將具有其他數據之間的概率。你只能訪問概率在物體下面的語句:

attr(pred_prob, "probabilities") 

    setosa versicolor virginica 

1 0.979989881 0.011347796 0.008662323

2 0.972567961 0.018145783 0.009286256

3 0.978668604 0.011973933 0.009357463

...

希望這可以幫助。

注意:我相信當你在內部給'概率'svm執行一個vs其他分類器時,因爲'概率'參數沒有被設置的'概率'參數設置對模型需要更多的時間。

+0

謝謝@Pavan!我有一個六級分類問題,並調整你的答案,我很容易破解它。真棒!我不知道的是,class屬性必須是絕對的,才能正常工作。最初我的數據集有類表示爲整數。沒有錯誤發生,但行attr(pred_prob,「概率」)返回一個NULL對象。我必須更改我的數據集以將類屬性轉換爲某種類別的表示形式。然後我有可能返回到每個類,類似於你的例子。再次感謝! –