2012-11-09 8 views
15

Domanda SVM rapida per scikit-learn. Quando ci si allena uno SVM, è qualcosa di simileEtichette di classe non intera Scikit-Learn

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

C'è un modo per labels essere un elenco di tipo non numerico? Ad esempio, se voglio classificare i vettori come "gatto" o "cane", senza dover avere una sorta di tabella di ricerca esterna che codifica "gatto" e "cane" in 1 e 2. Quando provo a passare solo una lista di stringhe, ho ...

ValueError: invalid literal for float(): cat

Quindi, non assomiglia solo stringhe spintoni in labels funzioneranno. Qualche idea?

risposta

9

La versione recente di sklearn è in grado di utilizzare stringa come le etichette. Ad esempio:

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

Il passaggio delle stringhe direttamente alle classi è attivo, ma non è ancora supportato negli SVM. Per il momento, abbiamo il LabelEncoder che può fare la conservazione del libro per voi.

[modifica] Questo dovrebbe funzionare ora, fuori dalla scatola [/ modifica]