【问题标题】:Train/test split preserving class proportions in each split训练/测试拆分在每个拆分中保留类比例
【发布时间】:2021-01-28 21:00:40
【问题描述】:

假设我想拆分如下所示的 NER 数据集:

Data: "Jokowi is the president of Indonesia"
Label: ['B-Person', 'O', 'O', 'O', 'O', 'Country']

是否有任何 python 库或算法可以确保训练和测试数据集的每个类分布相同? 任何建议将不胜感激

【问题讨论】:

  • 您能否添加有关数据集的更多信息(可能是链接)以及有关数据架构的一些说明?
  • 数据是这样的https://raw.githubusercontent.com/rifoag/absa-coextraction/master/dataset/train_4k.txt 但是你可以忽略第三列。数据是一个句子,包含对酒店的评论。我想按句子拆分并保持标签分层,但问题是标签处于令牌级别。谢谢你的提问

标签: python machine-learning train-test-split


【解决方案1】:

你有 sklearn 的StratifiedShuffleSplit 来做这件事。来自文档:

通过保留每个类的样本百分比来进行折叠。

StratifiedShuffleSplit 返回一个生成器,其中包含将数据帧拆分为训练和测试的索引。这是一个示例用例,清楚地表明在每个拆分中确实保留了类比例:

from sklearn.model_selection import StratifiedShuffleSplit
import seaborn as sns

X = np.random.randint(0,5,(1200,2))
y = np.random.choice([0,1],size=(1200,), p=[0.8,0.2])

sss = StratifiedShuffleSplit(n_splits=2, test_size=0.2, random_state=0)
train_index, test_index = next(sss.split(X, y))

fig, axes = plt.subplots(1,2, figsize=(10,5))
for split, title, ax in zip([train_index, test_index], 
                     ['Train split', 'Test split'],
                     axes.flatten()):
    sns.countplot(y[split], ax=ax).set_title(title)

【讨论】:

  • 对不起,我忘了提供我的意图是对每个标签进行分层:假设训练集中的 B-ASPECT 标签比例为 15%,测试集上的标签比例为 B- ASPECT 应该是相似的。我不确定 sklearn 的 StratifiedShuffleSplit 可以做到这一点。不过谢谢你的回答,我会调查的。
  • 看看答案中的直方图,StratifiedShuffleSplit 正是这样做的。训练集和测试集中值的比例是相同的@RifoGenadi
  • 不要忘记您可以投票和接受答案。见What should I do when someone answers my question?,谢谢@RifoGenadi
  • 我担心的是,数据是一个句子([“Jokowi 是印度尼西亚总统”,“我在这里和迈克尔在一起”,...] 并且标签在令牌级别(所以 y 是一个标签序列 [['B-Person', 'O', 'O', 'O', 'O', 'B-Country'], ['O, 'O', 'B- Person', O']]。如果我完全这样做,每个唯一序列都将被视为一个新类,因此它不适用于这个类。
  • 嗯,这看起来相当复杂。你也没有提到你有一个多输出问题。你能问一个新的问题吗? @RifoGenadim 也许有一个更完整的例子,更清晰的解释
【解决方案2】:

您可以探索 Scikit 学习库中提供的 StratifiedShuffleSplit。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-01
    • 2021-06-28
    • 2018-01-01
    • 2018-12-21
    • 1970-01-01
    • 2019-03-07
    • 2020-09-12
    • 2017-11-01
    相关资源
    最近更新 更多