减少多类到二进制分类问题

时间:2019-07-22 12:32:53

标签: python pandas machine-learning scikit-learn classification

我正在使用著名的UCI heart disease dataset做实验,但是效果不佳(〜58%acc。)。

此数据集具有5种顺序分类,其中“存在心脏病的程度”从0到4,其中0表示没有心脏病,而4表示心脏问题的高度存在 >。问题在于该数据集非常不平衡,并且归类为0的对象比其他对象多得多。将此数据集呈现给MLP,其准确度为58%,非常低。

因此,我想将所有分类为1-4的对象组合起来,并将其转换为二进制分类(例如0 =无疾病/ 1 =发现疾病)。我注意到这被称为one-against-all策略。由于我对ML这个世界并不陌生,所以我想知道如何用熊猫来做到这一点,或者是否有更好的工具可以做到这一点。

1 个答案:

答案 0 :(得分:-1)

很简单,当前您的y_train数据如下:[1,2,5,2,1,3,2,4,4,4,5,5,5] 您要做的是创建一个空数组binary_labels,然后遍历PD中的每一行,如果标签为1-4,则将0附加到binary_labels,否则附加1。然后在PD并针对其值设置binary_labels,或者用此数组替换y_train数据。

此外,您将替换MLP等中的损失函数。但这就是构造数据的方式。