首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >总是百分百的概率: predict_proba,滑雪板

总是百分百的概率: predict_proba,滑雪板
EN

Stack Overflow用户
提问于 2016-11-22 17:16:37
回答 1查看 1.2K关注 0票数 2

我使用Python的sklearn对文本进行分类。

我调用函数predict_proba,它看起来如下所示:

代码语言:javascript
复制
[[  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个,分布如下:

代码语言:javascript
复制
    {'business': 27,
     'economy': 20,
     'lifestyle': 22,
     'opinion': 11,
     'politics': 30,
     'science': 21,
     'sport': 21,
     'tech': 23}

我的管道看起来是这样的,我的特性主要是bag-of-words和一些语言关键数字,比如文本长度。

代码语言:javascript
复制
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之后,它似乎正确地工作了。有人能解释一下这种奇怪的行为吗?

EN

回答 1

Stack Overflow用户

发布于 2016-11-22 19:49:49

这意味着,尤其是考虑到至少有一个是幼稚的Bayes:

  • 您的数据处理例程中有一个错误,也许您将整个文档转换为一个单词,而不是将其分块成几个部分?检查每个步骤,以确保您的文档实际上是在word级别上编码的。
  • 您的数据已“损坏”(有唯一标识类的唯一单词),例如新闻组数据集最初由headers信息组成,其中类名是字面上指定的(因此,每个关于体育的文档都有“group: sport @.”)。等)
  • 类的有很大的不成比例,而您的模型只是一直在预测大多数类。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40747857

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档