2012-11-09 25 views
15

scikit-learn的快速SVM問題。當你訓練SVM,它像非整型類標籤Scikit-Learn

from sklearn import svm 
s = svm.SVC() 
s.fit(training_data, labels) 

有沒有辦法爲labels是一個非數字類型的列表?例如,如果我想將矢量分類爲「貓」或「狗」,而不必具有將「貓」和「狗」編碼爲1和2的外部查找表。當我嘗試只是傳遞一個字符串列表,我得到...

ValueError: invalid literal for float(): cat

因此,它看起來並不像在labels只是推搡字符串會工作。有任何想法嗎?

回答

9

的最新版本sklearn的是能夠使用字符串作爲標籤。例如:

from sklearn.svm import SVC 
clf = SVC() 
x = [[1,2,3], [4,5,6]] 
y = ['dog', 'cat'] 
clf.fit(x,y) 

yhat = clf.predict([[1,2,5]]) 
print yhat[0] 
18

直接將字符串作爲類傳遞是我的待辦事項,但它在SVM中尚不受支持。 目前,我們有LabelEncoder可以爲你保存書籍。

[編輯]這應該現在開箱[/編輯]