我正在研究疾病二元分类问题。
0 =健康,1 =不健康
该疾病是一种运动障碍,患者在进行特定运动时出现。我应用了留一法交叉验证来训练所有患者,除了一个要测试的患者,依此类推。
问题是,一些患者在他们的数据集中根本没有表现出不健康的类别。因此,由于这些患者,评估指标 f1-score、精确度和召回率急剧下降。
我尝试使用 SMOTE 过采样,但它不起作用,因为它会从其他患者的数据中生成新样本。此外,我尝试了类权重,但效果不佳,因为测试集中没有次要类赋予它更高的优先级。
我怎么解决这个问题?
我正在研究疾病二元分类问题。
0 =健康,1 =不健康
该疾病是一种运动障碍,患者在进行特定运动时出现。我应用了留一法交叉验证来训练所有患者,除了一个要测试的患者,依此类推。
问题是,一些患者在他们的数据集中根本没有表现出不健康的类别。因此,由于这些患者,评估指标 f1-score、精确度和召回率急剧下降。
我尝试使用 SMOTE 过采样,但它不起作用,因为它会从其他患者的数据中生成新样本。此外,我尝试了类权重,但效果不佳,因为测试集中没有次要类赋予它更高的优先级。
我怎么解决这个问题?
您可以尝试合并:将每轮测试的所有预测“合并”在一起,并在这些合并的预测上计算一次指标
基本上,您可以只保留每个测试集的预测和真实值列表。然后在对每个患者进行测试后,将所有预测值和真值组合在一起,最后生成一个混淆矩阵,其中包含来自所有患者的组合预测值和真值。
然后您将能够计算准确率、召回率和精度
进行交叉验证或引导!此外,对于指标,请查看每个班级的表现和宏观平均水平。
尝试使用分层来查看问题是否已解决。拆分时将分层参数添加为train_test_split(x, y, test_size = 0.2, random_state = 69, startify = y)。