如何正确拆分包含训练测试和交叉验证集的不平衡数据集
How to correctly split unbalanced dataset incorporating train test and cross validation set
上面的图片是我要复制的。我只是不知道我的做法是否正确。
我正在处理 FakeNewsChallenge 数据集及其极度不平衡,我正在尝试复制和改进论文中使用的方法。
同意 - 7.36%
不同意 - 1.68%
讨论 - 17.82%
无关 - 73.13%
我是这样拆分数据的:
(将数据集拆分为 67/33 拆分)
- 训练 67%,测试 33%
(将训练进一步拆分为 80/20 以进行验证)
- 训练 80%,验证 20%
(然后使用 3 折交叉验证集拆分训练和验证)
顺便说一句,要获得 1.68% 的不同意和同意非常困难。
这就是我遇到的问题,因为它对我来说没有任何意义。在 80/20 拆分中创建的验证集是否也在 5 倍中分层?
这是我目前所在的位置:
将数据分成 67% 的训练集和 33% 的测试集
x_train1, x_test, y_train1, y_test = train_test_split(x, y, test_size=0.33)
x_train2, x_val, y_train2, y_val = train_test_split(x_train1, y_train1, test_size=0.20)
skf = StratifiedKFold(n_splits=3, shuffle = True)
skf.getn_splits(x_train2, y_train2)
for train_index, test_index in skf.split(x_train2, y_train2):
x_train_cros, x_test_cros = x_train2[train_index], x_train2[test_index]
y_train_cros, y_test_cros = y_train2[train_index], y_train[test_index]
我还会 运行 skf 再次用于验证集吗?在顺序模型中使用的 skf 创建的测试集在哪里?
引用我正在使用的方法:
托塔,阿斯维尼;蒂拉克,普里扬卡;阿卢瓦利亚,西姆拉特;和 Lohia, Nibrat(2018 年)“假新闻检测:一种深度学习方法”,SMU 数据科学评论:卷。 1:第 3 条,第 10 条。
可在:https://scholar.smu.edu/datasciencereview/vol1/iss3/10
您需要在函数中增加一个参数'train_test_split()':
x_train1, x_test, y_train1, y_test = train_test_split(x, y, test_size=0.33, stratify = y)
这将使您平均分配所有目标类别。
同意 - 7.36%
不同意 - 1.68%
讨论 - 17.82%
无关 - 73.13%
我是这样拆分数据的:
(将数据集拆分为 67/33 拆分)
- 训练 67%,测试 33%
(将训练进一步拆分为 80/20 以进行验证)
- 训练 80%,验证 20%
(然后使用 3 折交叉验证集拆分训练和验证)
顺便说一句,要获得 1.68% 的不同意和同意非常困难。
这就是我遇到的问题,因为它对我来说没有任何意义。在 80/20 拆分中创建的验证集是否也在 5 倍中分层?
这是我目前所在的位置:
将数据分成 67% 的训练集和 33% 的测试集
x_train1, x_test, y_train1, y_test = train_test_split(x, y, test_size=0.33)
x_train2, x_val, y_train2, y_val = train_test_split(x_train1, y_train1, test_size=0.20)
skf = StratifiedKFold(n_splits=3, shuffle = True)
skf.getn_splits(x_train2, y_train2)
for train_index, test_index in skf.split(x_train2, y_train2):
x_train_cros, x_test_cros = x_train2[train_index], x_train2[test_index]
y_train_cros, y_test_cros = y_train2[train_index], y_train[test_index]
我还会 运行 skf 再次用于验证集吗?在顺序模型中使用的 skf 创建的测试集在哪里?
引用我正在使用的方法:
托塔,阿斯维尼;蒂拉克,普里扬卡;阿卢瓦利亚,西姆拉特;和 Lohia, Nibrat(2018 年)“假新闻检测:一种深度学习方法”,SMU 数据科学评论:卷。 1:第 3 条,第 10 条。 可在:https://scholar.smu.edu/datasciencereview/vol1/iss3/10
您需要在函数中增加一个参数'train_test_split()':
x_train1, x_test, y_train1, y_test = train_test_split(x, y, test_size=0.33, stratify = y)
这将使您平均分配所有目标类别。