2012-06-07 2 views
3

Вы можете обучить DecisionTreeClassifier строковыми данными?scikit-learn CART String Data

Когда я пытаюсь использовать данные Струнный я получаю ValueError: может не преобразователь строки плавать

clf = DecisionTreeClassifier()
clf.fit([['asdf', '1'], ['asdf', '0']], ['2', '3'])

ответ

7

Вы должны преобразовать строковые функции для числовых единиц в массиве NumPy; DictVectorizer делает это за вас.

samples = [['asdf', '1'], ['asdf', '0']] 
# turn the samples into dicts 
samples = [dict(enumerate(sample)) for sample in samples] 

# turn list of dicts into a numpy array 
vect = DictVectorizer(sparse=False) 
X = vect.fit_transform(samples) 

clf = DecisionTreeClassifier() 
clf.fit(X, ['2', '3']) 

Не забывайте использовать vect.transform на тестовых образцах, после преобразования тех dicts.

+0

Прохладный, я на 100% поддерживаю вас, хватая ссылку на мой ответ и удаляя ссылку на мой ответ, а затем я удалю свой ответ. Твой лучше. –

+0

@rrenaud: ОК, это сделано. Не стесняйтесь оставлять свой ответ. –

Смежные вопросы