【问题标题】:scikit learn discretizing categorical numeric datascikit 学习离散化分类数值数据
【发布时间】:2016-11-27 20:30:13
【问题描述】:

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

这就是数据的样子(熊猫数据框)。我已将数据框拆分为 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),但我不确定这是否与数据的离散化方式有关。

我的问题是 - 这是离散化数据的正确方法吗?我的代码是正确的还是有更好的方法?

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-05
      • 2014-04-20
      • 2020-07-16
      • 2018-06-10
      • 2016-05-06
      • 2016-06-21
      • 1970-01-01
      • 2018-05-28
      相关资源
      最近更新 更多