如何解决应该应用哪种技术来拆分大文本数据集以进行数据匹配?
我正在处理一个二元分类问题,我正在使用应该用于数据匹配的大型文本数据集。数据不平衡,但我正在使用一种方法来解决这个问题。
我想在这个数据集的小子集中尝试一些带有 sklearn 的分类器。 sklearn 中有没有办法将这个数据集划分为 N 个子集,保持类的比例,那么我可以将这些子集中的每一个划分为训练/测试,并为每个子集独立拟合分类器吗?
解决方法
StratifiedKFold
是 sklearn.preprocessing
中的一个模块,可以完成这项工作。假设您的数据存储在 X
(特征)和 y
(目标)中。
该方法将您的数据集拆分为 N 个部分,每个块默认拆分为训练和测试子集。从代码中可以看出,拆分器返回的是索引,而不是拆分后的数据。
# Import module
from sklearn.preprocessing import StratifiedKFold
# Set N
N = 5
# Initialize a splitter that will divide data into N groups
kf = StratifiedKFold(n_splits=N)
# Append the indices of each of the N splits to a list
idx_splits = []
for idx_1,idx_2 in kf.split(X,y):
idx_splits.append((idx_1,idx_2))
# Get the third train split
X[idx_splits[3][0]]
y[idx_splits[3][0]]
# Get the third test split
X[idx_splits[3][1]]
y[idx_splits[3][1]]
,
我认为 sklearn 的 StratifiedKFold 可能是您正在寻找的。它将保持原始数据集的类比例。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。