Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将多类问题简化为二元分类问题_Python_Pandas_Machine Learning_Scikit Learn_Classification - Fatal编程技术网

Python 将多类问题简化为二元分类问题

Python 将多类问题简化为二元分类问题,python,pandas,machine-learning,scikit-learn,classification,Python,Pandas,Machine Learning,Scikit Learn,Classification,我正在做一个著名的实验,但并没有显示出好的结果(约58%) 该数据集有5个有序类,“心脏病存在水平”从0到4,其中0表示无心脏病,4表示心脏病高存在。问题是该数据集非常不平衡,并且分类为0的对象比其他对象多得多。将此数据集呈现给MLP的准确率为58%,这是非常低的 因此,我想将从1-4分类的所有对象合并,并将其转换为二元分类(例如,0=无疾病/1=发现疾病)。我注意到这被称为“一对一”策略。由于我对ML这个世界非常陌生,我想知道如何使用熊猫来实现这一点,或者是否有更好的工具来实现这一点。很简单,

我正在做一个著名的实验,但并没有显示出好的结果(约58%)

该数据集有5个有序类,“心脏病存在水平”从0到4,其中0表示无心脏病,4表示心脏病高存在。问题是该数据集非常不平衡,并且分类为0的对象比其他对象多得多。将此数据集呈现给MLP的准确率为58%,这是非常低的


因此,我想将从1-4分类的所有对象合并,并将其转换为二元分类(例如,0=无疾病/1=发现疾病)。我注意到这被称为“一对一”策略。由于我对ML这个世界非常陌生,我想知道如何使用熊猫来实现这一点,或者是否有更好的工具来实现这一点。

很简单,目前您的
y\u训练数据看起来像:
[1,2,5,2,1,3,2,4,4,5,5,5]
您要做的是创建一个空数组
二进制\u标签
,然后遍历PD中的每一行,如果标签为1-4,则将0附加到二进制\u标签,否则将附加1。然后向PD引入一个新列,并根据其值设置二进制_标签,或者用此数组替换y_序列数据


此外,您还可以替换MLP中的损失函数,等等。但这就是数据的结构。

df['disease\u found']=df['level\u presence']>0
,然后使用“disease\u found”列而不是“level\u presence”。我并不认为这是解决您的低精度问题的方法。偏差是数据固有的,你应该找到一个适合你的数据的算法,而不是适合你的算法。事实上,我将MLP与带有决策树的Adaboost(集成)进行比较。这两种方法的精确度都很低。谢谢,但是你说的替换MLP中的损耗函数是什么意思?我使用的是标准的
MLP分类器
来自
scikit学习
谢谢,我的模型现在具有约83%的准确性:我认为MLP可以推断损失函数,所以这没关系:)