我使用Python的sklearn对文本进行分类。
我调用函数predict_proba,它看起来如下所示:
[[ 6.74918834e-53 1.59981248e-51 2.74934762e-26 1.24948745e-43
2.93801753e-48 3.43788315e-18 1.00000000e+00 2.96818867e-20]]即使我试图输入含糊不清的数据,它也总是这样。在我看来,这个类词不太可能是百分之百确定的,那么有什么问题呢?
目前,我正在使用MultinomialNB分类器,它是关于文本分类的。我用新闻报纸上的文章和体育,economy等课程来训练我的模型。培训实例的大小为175个,分布如下:
{'business': 27,
'economy': 20,
'lifestyle': 22,
'opinion': 11,
'politics': 30,
'science': 21,
'sport': 21,
'tech': 23}我的管道看起来是这样的,我的特性主要是bag-of-words和一些语言关键数字,比如文本长度。
cv = CountVectorizer(min_df=1, ngram_range=(1,1), max_features=1000)
tt = TfidfTransformer()
lv = LinguisticVectorizer() # custom class
clf = MultinomialNB()
pipeline = Pipeline([
('features', FeatureUnion([
('ngram_tf_idf', Pipeline([
('counts', cv),
('tf_idf', tt),
])),
('linguistic', lv),
])),
('scaler', StandardScaler(with_mean=False)),
('classifier', clf)
])如果你想看看我的训练例子,我已经上传到那里了:wetransfer.com
更新:可能值得一提的是,当前的设置在测试样本上得分为0.67。但在使用StandardScaler之前,概率分布更为现实(即并不总是100 %),但它的得分仅为0.2。
更新:在添加了一个MaxAbsScaler之后,它似乎正确地工作了。有人能解释一下这种奇怪的行为吗?
发布于 2016-11-22 19:49:49
这意味着,尤其是考虑到至少有一个是幼稚的Bayes:
https://stackoverflow.com/questions/40747857
复制相似问题