【问题标题】:Understanding UndefinedMetricWarning in classification report with scikit-learn?使用 scikit-learn 了解分类报告中的 UndefinedMetricWarning?
【发布时间】:2015-03-24 12:07:18
【问题描述】:

我有一个包含 5 个类别的文本分类任务,问题是我的精度很差,这个警告可能是由于数据不平衡(我不确定):

/usr/local/lib/python2.7/site-packages/sklearn/metrics/metrics.py:1771: UndefinedMetricWarning: Precision is ill-defined and being set to 0.0 in labels with no predicted samples.

我猜这个警告是因为数据聚集在 5 标签中而产生的。 如何解决此警告以及如何增加分类报告的结果?。我还尝试了使用以下超参数的网格搜索:

Best parameters set:
    clf__C: 0.1
    vect__max_df: 0.25
    vect__ngram_range: (1, 1)
    vect__use_idf: True

Accuracy:
0.456923076923

但是仍然得到不好的结果,有人可以帮我用 SVC 或其他模型增加这个结果吗?

【问题讨论】:

  • 我忘了说我有不平衡的数据。一半的数据在一个类中,有 3 个类。
  • 警告是由分类报告引发的,而不是网格搜索。
  • 感谢您的反馈。我知道这是由分类报告引起的,我查看网络以解决此问题并阅读了this,因为我了解之前的参考通过使用其他参数进行网格搜索来解决此问题你认为这是由于不平衡的数据。可能发生这种情况是因为我在一个班级中有 1190 个 2599 实例。知道如何解决之前的警告吗?。
  • 那么您不是在询问警告,而是在询问如何在数据上获得更好的结果。我不会在这里使用'rbf'内核,如果你这样做,你还必须搜索'gamma'。对于线性内核,使用更广泛的 C 语言,可能使用scoring="auc"。你也可以试试class_weight='auto'
  • 降维不能使用标签数据中的任何信息,而监督算法可以。除非您对数据中的噪声有具体了解,否则无监督的降维不太可能有帮助。

标签: python python-2.7 machine-learning nlp scikit-learn


【解决方案1】:

您可以使用管道,然后也可以网格搜索 TfidifVectorizer 的参数以及 SVC 的 C,例如 n-gram 范围 (1, 1)、(1, 2) 或 (2, 2),可以设置不同的 max_df,与 CountVectorizer 进行比较,也可以尝试使用字符 n-gram(具有更高的 n-gram 范围)。

【讨论】:

  • 我都准备好了,但仍然没有增加指标,我也做了一个网格搜索,仍然一样。感谢您的帮助。
猜你喜欢
  • 2020-02-14
  • 2015-03-27
  • 2017-06-29
  • 2022-10-20
  • 2018-09-26
  • 2015-02-12
  • 2016-09-10
  • 2015-11-28
  • 2018-03-06
相关资源
最近更新 更多