有没有办法在 sci-kit 学习交叉验证中定义我想要的每个标签的分数?

问题描述 投票:0回答:1

我写了一个简单的Python脚本,使用 sklearn.neural_network.MLPClassifiersklearn.model_selection.GridSearchCV 来对二元分类数据进行预测,每个点被贴上0或1的标签。在训练数据中,大概90%的数据有标签1,10%的数据有标签0。在测试数据中,大概35%的数据有标签1,65%的数据有标签0。这个比例是已知的,虽然标签不知道。

我的模型目前是过度拟合的。我对训练数据的交叉验证得分是85-90%,但当我在测试集上运行代码时,得分低于40%。

我想到的一个变通方法是,我可以尝试将以下设置为 GridSearchCV 来分割数据,使每个训练验证集的标签比例与测试数据大致相同。然而,这个库似乎并不是一个选项,而且我的google-fu也没有返回任何关于其他sci-kit学习程序的结果。

有没有其他的库我可以使用,或者我可以输入一个我没有设法找到的参数?谢谢你。

python scikit-learn cross-validation
1个回答
1
投票

我建议 imblearn 库,因为它提供了多种重新取样的方法。我不知道你的数据集的大小或其他细节,但一般来说,我认为过采样策略应该优于欠采样策略。例如,你可以使用 SMOTE 来对训练集中的0个标签进行过采样。 训练集中的 sampling_strategy 参数还允许您事先指定您所需的比例。

© www.soinside.com 2019 - 2024. All rights reserved.