0

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

这就是数据的样子(熊猫数据框)。我有数据帧分成dataLabeldataFeatures

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

我想用scikit学习的决策树和多项朴素贝叶斯,我试图用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')。 代码现在正确运行 - 并且从查看不同的选项 - 我发现使用OneHotEncoderDictVectorizer更好