首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何对多标签多类分类进行分层抽样?

如何对多标签多类分类进行分层抽样?
EN

Data Science用户
提问于 2018-06-13 11:18:12
回答 3查看 23.1K关注 0票数 12

我提出这个问题,理由不多:

  • 手头的数据集不平衡。
  • 我在下面使用了代码x= dataset[“讯息”] y= dataset[‘Label2 1’,‘Label2 2’] train_data,test_data = train_test_split(x,test_size = 0.1,stratify=y,random_state = 73),但是我得到的错误消息是The least populated class in y has only 1 member, which is too few. The minimum number of labels for any class cannot be less than 2. --我删除了每个标签中类计数<2的类。

我不知道为什么会出现这个错误。

所以,我想自己去实施分层抽样。在此,我需要帮助破译问题的原因,并在多标签分类中实施分层抽样,以便在培训期间也能很好地适用于个别批次。

EN

回答 3

Data Science用户

发布于 2018-06-13 11:52:47

这里的错误似乎是因为您需要训练和测试数据(因此需要两个数据集),这意味着每个类必须出现在每个数据集中。这意味着每个类必须至少有两个样本。它是实现train_test_split的人的设计选择。我想从技术上讲,这可能不是stratified

您可以看到它是在SciKit学习源代码中在class StratifiedShuffleSplit中实现的:

代码语言:javascript
复制
classes, y_indices = np.unique(y, return_inverse=True)
n_classes = classes.shape[0]

class_counts = np.bincount(y_indices)

if np.min(class_counts) < 2:
    raise ValueError("The least populated class in y has only 1"
                     " member, which is too few. The minimum"
                     " number of groups for any class cannot"
                     " be less than 2.")

np.unique查找y中每个类的索引。因为选项return_inverse=True被传递,它返回一个索引数组,该数组将允许对输入数组y进行完全重构。这意味着,要获得存在的类的总数,您需要使用np.bincount;创建class_counts

最后的检查是class_counts是否小于要创建的数据集的数量。如果是的话,那么您就不能对数据创建一个正确的分层分割--因此您将得到一个错误。

至于如何创建自己的版本:我实现分层抽样的一种方法是使用直方图,更具体地说,使用NumPy的histogram函数。对于连续标签(即非离散类),它工作得很好--而且我没有考虑多标签问题,所以您可能不得不调整我的建议,允许它满足您的需要。

其主要思想是将标签分割成一个直方图的回收箱,然后从这些垃圾箱中随机抽取样本,并选择允许重复。这正是解决类中<2个标签的具体问题的部分。我意识到这并不能具体地回答你的问题,但也许它会给你一些新的想法。

如果复制没有意义,或者在您的实验中被严格禁止,那么您可以考虑以某种方式合并较小的类,这样每个类就有>2个标签。这可能比删除它们更有用,但它是否可行将取决于您的数据。

票数 12
EN

Data Science用户

发布于 2019-05-24 14:53:53

您可以在技能库中使用多标签数据分层。

票数 11
EN

Data Science用户

发布于 2019-07-10 14:47:41

这是因为分层的性质。stratify参数将其设置为拆分数据,以便将test_size数据量分配给每个类。在这种情况下,您没有足够的类标签来保持一个(或多个)类的数据分割率等于test_size

票数 0
EN
页面原文内容由Data Science提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://datascience.stackexchange.com/questions/33076

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档