scikit学习离散分类数值数据

时间:2016-07-24 12:04:57

标签: machine-learning scikit-learn classification categorical-data sklearn-pandas

我正在尝试将数据离散化以进行分类。它们的值是字符串,我将它们转换为数字0,1,2,3。

这就是数据的样子(pandas dataframe)。我已将数据框拆分为dataLabeldataFeatures

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

我想使用scikit learn's Decision Tree和Multinomial Naive Bayes,并尝试使用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 个答案:

答案 0 :(得分:1)

所以错误是Y和X的顺序错误 - 它应该是scores = cross_val_score(mnb, X, Y, cv=10, scoring='accuracy')。 代码现在正常运行 - 从查看不同的选项 - 我发现使用OneHotEncoderDictVectorizer更好