有没有办法在 sci-kit 学习交叉验证中定义我想要的每个标签的分数?
Is there a way to define the fraction of each label I want in sci-kit learn cross validation?
我写了一个简单的 Python 脚本,它使用 sklearn.neural_network.MLPClassifier
和 sklearn.model_selection.GridSearchCV
对二进制分类数据进行预测,每个点都标记为 0 或 1。在训练中数据中,大约 90% 的标签为 1,10% 的标签为 0。在测试数据中,大约 35% 的标签为 1,65% 的标签为 0。虽然标签未知,但这个比例是已知的。
我的模型目前过拟合。我对训练数据的交叉验证分数是 85-90%,但是当我 运行 代码在测试集上的分数低于 40%。
我想到的一个解决方法是,我可以尝试设置 GridSearchCV
来拆分数据,以便每个 training/validation 集的标签比例与测试数据大致相同。然而,这似乎不是这个库的一个选项,而且我的 google-fu 没有返回任何关于其他 sci-kit 学习程序的结果。
是否有任何其他我可以使用的库,或者我可以输入但我没有找到的参数?谢谢。
我建议 imblearn
library, as it offers a great variety of methods for re-sampling. I do not know the size or other specifics of your data set, but in general, I would argue that oversampling strategies should be favored over undersampling ones. You could for example use SMOTE
对训练集中的 0 个标签进行过采样。 sampling_strategy
参数还允许您预先指定所需的比率。
我写了一个简单的 Python 脚本,它使用 sklearn.neural_network.MLPClassifier
和 sklearn.model_selection.GridSearchCV
对二进制分类数据进行预测,每个点都标记为 0 或 1。在训练中数据中,大约 90% 的标签为 1,10% 的标签为 0。在测试数据中,大约 35% 的标签为 1,65% 的标签为 0。虽然标签未知,但这个比例是已知的。
我的模型目前过拟合。我对训练数据的交叉验证分数是 85-90%,但是当我 运行 代码在测试集上的分数低于 40%。
我想到的一个解决方法是,我可以尝试设置 GridSearchCV
来拆分数据,以便每个 training/validation 集的标签比例与测试数据大致相同。然而,这似乎不是这个库的一个选项,而且我的 google-fu 没有返回任何关于其他 sci-kit 学习程序的结果。
是否有任何其他我可以使用的库,或者我可以输入但我没有找到的参数?谢谢。
我建议 imblearn
library, as it offers a great variety of methods for re-sampling. I do not know the size or other specifics of your data set, but in general, I would argue that oversampling strategies should be favored over undersampling ones. You could for example use SMOTE
对训练集中的 0 个标签进行过采样。 sampling_strategy
参数还允许您预先指定所需的比率。