scikit 学习离散化分类数字数据
scikit learn discretizing categorical numeric data
我正在尝试离散化数据以进行分类。它们的值是字符串,我将它们转换为数字 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)
但我不确定这是否与数据的离散化方式有关。
我的问题是 - 这是离散化数据的正确方法吗?我的代码是否正确或是否有更好的方法?
所以错误是 Y 和 X 的顺序错误 - 应该是 scores = cross_val_score(mnb, X, Y, cv=10, scoring='accuracy')
。
代码现在 运行 正确 - 通过查看不同的选项 - 我发现使用 OneHotEncoder
比 DictVectorizer
更好
我正在尝试离散化数据以进行分类。它们的值是字符串,我将它们转换为数字 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)
但我不确定这是否与数据的离散化方式有关。
我的问题是 - 这是离散化数据的正确方法吗?我的代码是否正确或是否有更好的方法?
所以错误是 Y 和 X 的顺序错误 - 应该是 scores = cross_val_score(mnb, X, Y, cv=10, scoring='accuracy')
。
代码现在 运行 正确 - 通过查看不同的选项 - 我发现使用 OneHotEncoder
比 DictVectorizer