scikit-learn报”ValueError: Target is multiclass but average=’binary’. Please choose another average setting, one of [None, ‘micro’, ‘macro’, ‘weighted’]. “的原因以及解决办法

  • Post category:Python

该错误通常是由于混淆矩阵中存在多个类别而导致的,而使用了 average='binary' 的评估方法。这意味着 sklearn 认为只有两个类别。如果在使用这种二元分类设置的同时,实际目标变量中的类别数超过两个,就会出现上述错误。

为了解决这个问题,可以考虑使用其他的 average 参数值,比如 Nonemicromacro 或者 weighted。具体内容如下:

  1. average=None:计算每个类别的分数。

  2. average='micro':对每个类别的每个预测计算一个加权平均数,其中每个类别的权重等于其在数据中的出现频率。这个平均化方法将所有类别的预测放在一起,然后计算他们的准确性。

  3. average='macro':为每个类别计算准确率和召回率,然后计算它们的平均值。这个方法不考虑类别不平衡,因此对于所有类别都平等重要的问题很有用。

  4. average='weighted':为每个类别计算准确率和召回率,然后计算它们的加权平均值,这个加权平均数由每个类别在数据集中的出现频率决定。此方法适用于类别不平衡的数据集。

因此,正确解决这个错误的方法是根据不同的任务需求选择合适的 average 参数进行分类评估。