1

我有一个 scikit-learn 模型,它简化了一点,如下所示:

clf1 = RandomForestClassifier()
clf1.fit(data_training, non_binary_labels_training)
prediction1 = clf1.predict(data_testing)


clf2 = RandomForestClassifier()
binary_labels = label_binarize(non_binary_labels_training, ["a", "b", "c"])
clf2.fit(data_training, binary_labels)
prediction2 = clf2.predict(data_testing)

f1_score1(non_binary_labels_testing, prediction1))
f1_score2(binary_labels_testing, prediction2))

现在,f1_score1总是比f1_score2。换句话说,多类标签比二元标签(从相同的多类标签生成)得分更高。有什么原因吗?这是预期的吗?

我有大约 70 个训练和测试文件和 36 个类(不是上面示例中的三个)。

4

1 回答 1

3

似乎当您对标签进行二值化时,随机森林可以一次预测多个标签,而在初始情况下仅预测最可能的标签。F1分数对此很敏感。

UPD:我错了。我已经对其进行了测试,在我的情况下它总是只返回一个标签,但分数仍然很差。

UPD2:我并没有我想的那么错。sum(sum(prediction2)) 似乎小于 len(prediction),因此某些行中应该有 0。

于 2014-10-29T23:13:29.710 回答