【发布时间】: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