微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

应该应用哪种技术来拆分大文本数据集以进行数据匹配?

如何解决应该应用哪种技术来拆分大文本数据集以进行数据匹配?

我正在处理一个二元分类问题,我正在使用应该用于数据匹配的大型文本数据集。数据不平衡,但我正在使用一种方法解决这个问题。

我想在这个数据集的小子集中尝试一些带有 sklearn 的分类器。 sklearn 中有没有办法将这个数据集划分为 N 个子集,保持类的比例,那么我可以将这些子集中的每一个划分为训练/测试,并为每个子集独立拟合分类器吗?

解决方法

StratifiedKFoldsklearn.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 举报,一经查实,本站将立刻删除。