【问题标题】:Multilabel model scores better than the same model with binary-labels in scikit-learn在 scikit-learn 中,多标签模型的得分优于具有二元标签的相同模型
【发布时间】:2014-12-25 16:12:25
【问题描述】:

我有一个 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 个类(不是上面示例中的三个)。

【问题讨论】:

    标签: machine-learning scipy scikit-learn random-forest multilabel-classification


    【解决方案1】:

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

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

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

    【讨论】:

    • 为了澄清这一点,如果你有一个单输出模型,最好不要对标签进行二值化,因为这样做可能会降低预测的准确性。
    猜你喜欢
    • 2016-10-17
    • 2014-11-19
    • 2020-11-22
    • 2013-09-26
    • 2018-10-20
    • 2016-01-24
    • 2017-08-05
    • 1970-01-01
    • 2015-11-21
    相关资源
    最近更新 更多