Etiquetas de Clase No Entera Scikit-Learn

Pregunta rápida de SVM para scikit-learn. Cuando entrenas un SVM, es algo así como

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

¿Hay alguna forma de que las labels sean una lista de un tipo no numérico? Por ejemplo, si quiero clasificar los vectores como ‘gato’ o ‘perro’, sin tener que tener algún tipo de tabla de búsqueda externa que codifique “gato” y “perro” en 1 y 2. Cuando bash pasar una lista de cadenas, obtengo …

ValueError: invalid literal for float(): cat

Por lo tanto, no parece que el simple hecho de empujar cadenas en las labels funcione. ¿Algunas ideas?

La versión reciente de sklearn es capaz de usar cadenas como las tags. Por ejemplo:

 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] 

Pasar cadenas como clases directamente está en mi tarea, pero todavía no es compatible con los SVM. Por el momento, tenemos el LabelEncoder que puede hacer la contabilidad para usted.

[editar] Esto debería funcionar ahora fuera de la caja [/ editar]