scikit научиться дискретизировать категориальные числовые данные

Я пытаюсь дискретизировать данные для классификации. Их значения были строками, и я преобразовал их в числа 0,1,2,3.

Вот как выглядят данные (кадр данных pandas). Я разделил фрейм данных на dataLabel и dataFeatures

Label   Feat1  Feat2  Feat3
  0        0     3      0
  1        1      1     2
  2        0      2     2
  3        1      3     3

Я хочу использовать дерево решений scikit Learn и многочленный наивный байесовский метод и пытаюсь дискретизировать данные, используя DictVectorizer

Это то, что у меня есть

dictvec = dataFeatures.T.to_dict().values()

from sklearn.feature_extraction import DictVectorizer as DV vectorizer = DV( sparse = False ) X = vectorizer.fit_transform(dictvec)

Y = dataLabel.ravel()

Это мой ввод в классификатор

from sklearn.naive_bayes import MultinomialNB

mnb = MultinomialNB()

from sklearn import metrics
scores = cross_val_score(mnb, Y, X, cv=10, scoring='accuracy')

Я получаю сообщение об ошибке bad input shape (64, 4), но я не уверен, связано ли это с дискретизацией данных.

Мой вопрос: это правильный способ дискретизации данных? Мой код правильный или есть лучший способ сделать это?




Ответы (1)


Итак, ошибка заключалась в том, что Y и X были в неправильном порядке — должно быть scores = cross_val_score(mnb, X, Y, cv=10, scoring='accuracy') . Код теперь работает правильно, и, изучив различные варианты, я обнаружил, что использование OneHotEncoder было лучше, чем DictVectorizer

person gbhrea    schedule 02.08.2016