【问题标题】:Reduce multiclass to binary classification problem [closed]减少多类到二元分类问题[关闭]
【发布时间】:2019-11-30 10:29:48
【问题描述】:

我正在用众所周知的UCI heart disease dataset 做一个实验,但它没有显示出好的结果(大约 58% 的准确度)。

此数据集有 5 个有序类别,“心脏病的存在程度”从 0 到 4,其中 0 表示没有心脏病,4 表示存在严重的心脏病。问题是这个数据集非常不平衡,归类为 0 的对象比其他对象多得多。将此数据集呈现给 MLP 得到了 58% 的准确率,非常低。

所以,我想组合从 1-4 分类的所有对象并将其转换为二元分类(例如 0 = 无疾病 / 1 = 发现疾病)。我注意到这被称为one-against-allstrategy。由于我对这个机器学习世界很陌生,我想知道如何使用 pandas 来完成这项工作,或者是否有更好的工具。

【问题讨论】:

  • df['disease_found'] = df['level_presence'] > 0,然后使用“disease_found”列而不是“level_presence”。
  • 并不是我认为这是解决您的低准确性问题的方法。偏差是数据固有的,您应该找到适合您的数据的算法,而不是适合您的数据以适合您的算法。
  • 实际上,我正在将 MLP 与带有决策树的 Adaboost(集成)进行比较。两者的准确性都很低。

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


【解决方案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 中的损失函数等。但这就是您构建数据的方式。

【讨论】:

  • 谢谢,但是你说的替换 MLP 中的损失函数是什么意思?我正在使用来自scikit-learn的标准MLPClassifier
  • 谢谢,我的模型现在的准确率约为 83%:D
  • 哦,我认为 MLP 推断了损失函数,所以没关系 :)
猜你喜欢
  • 2016-08-19
  • 2018-09-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-12
  • 1970-01-01
相关资源
最近更新 更多