【问题标题】:Always Probability of Hundred Percent: predict_proba, sklearn总是百分之百的概率:predict_proba,sklearn
【发布时间】:2017-04-06 11:34:39
【问题描述】:

我正在使用 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 分类器,它是关于 文本分类。我正在使用带有 体育、经济 等类的新闻论文文章来训练我的模型。训练样例大小为 175,分布如下:

    {'business': 27,
     'economy': 20,
     'lifestyle': 22,
     'opinion': 11,
     'politics': 30,
     'science': 21,
     'sport': 21,
     'tech': 23}

我的管道看起来像这样,我的特征主要是词袋和一些语言关键数字,如文本长度。

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 后,它似乎可以正常工作。有人可以解释这种奇怪的行为吗?

【问题讨论】:

  • 你能分享更多关于你使用的算法和你的数据是什么样子的细节吗?仅凭您提供的内容很难回答您的问题。
  • 如果您使用只有 175 个训练样本的词袋特征,您可能拥有比样本更多的特征,这是在没有适当调整学习器的情况下过拟合的好方法。就 burhan 而言,如果不使用您的实际数据,很难就此提供任何有针对性的反馈。
  • @RandyC:我已经添加了我的训练样本。而且即使模型过拟合,如果我输入的文本中包含“足球”、“商业”和“气候”之类的词,而这些词都在词袋中,我认为概率不应该是一百其中一类的百分比...

标签: python machine-learning scikit-learn


【解决方案1】:

这意味着,特别是考虑到至少有一个是朴素贝叶斯:

  • 您的数据处理例程中存在错误,也许您将整个文档转换为一个单词,而不是实际将其分块?检查每一步,确保您的文档实际上是在字级别上编码的。
  • 您的数据已“损坏”(存在唯一标识您的类的唯一词),例如新闻组数据集最初由 headers 信息组成,其中类名是按字面指定的(因此每个关于运动有“组:运动@...”等)
  • 您的类别巨大不成比例,只是您的模型一直在预测多数类别。

【讨论】:

  • 感谢您的建议。我认为数据处理例程中没有错误。当前设置在测试数据(70 个测试样本)上得分 0.67,同时有 7 个类别,因此它明显超过随机猜测。我尝试使用不同的报纸来源防止损坏数据,我还查看了一些文章以检查数据质量,虽然还有一些空间可以提高数据质量,但应该不会出现您提到的重大问题。样本中的类别几乎均匀分布(参见 OP),预测类别各不相同,但始终为 100%。
猜你喜欢
  • 2018-09-06
  • 2013-12-24
  • 2021-10-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-19
相关资源
最近更新 更多