首页 > 解决方案 > 如何在机器学习中使用 K-fold 验证进行欠采样

问题描述

我正在为我的项目 rn 处理一个高度不平衡的数据集,为简单起见,我将在这里举一个简单的例子:一个数据集有 20 个 '0' 和 80 个 '1',所以总数为 100。

假设我已经习惯X_train, X_test,y_train,y_test = train_test_split(X, y,stratify=y,random_state=42)了进行分层拆分(X_train.shape 为 80,X_test.shape 为 20),那么我的问题是如何同时在 train dataset 中实现欠采样 和 K-fold 验证

我最初的想法是使用from imblearn.under_sampling import RandomUnderSampler16 个 '0' 和 16 个 '1'(总共 32 个)来制作相等的分布式数据集,并对 32 个数据集进行 K 折交叉验证,并丢弃 X_train 中剩余的 48 个。使用模型预测 X_test。所以我想知道这是否是正确的处理程序。

标签: pythonmachine-learning

解决方案


您可以使用 RandomUnderSampler 方法来实现它。将随机状态和比率值放入参数中,并尝试看看这是否有效。


推荐阅读