Не целочисленные метки классов Scikit-Learn

Быстрый вопрос SVM для scikit-learn. Когда вы тренируете SVM, это что-то вроде

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

Есть ли какой-либо способ для labels быть списком нечислового типа? Например, если я хочу классифицировать векторы как "cat" или "dog", без необходимости иметь какую-то внешнюю таблицу поиска, которая кодирует "cat" и "dog" в 1 и 2. Когда я пытаюсь просто передать список строк, я получаю...

ValueError: invalid literal for float(): cat

Таким образом, это не похоже на то, что в t21 будет работать только толкание строк. Любые идеи?

Ответы

Ответ 1

Последняя версия 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]

Ответ 2

Передача строк в виде классов непосредственно на моем todo, но пока не поддерживается в SVM. На данный момент у нас есть LabelEncoder, который может сделать книгу для вас.

[править] Это должно теперь работать вне поля [/edit]