Python 如何将20个新闻组数据集从20重新分类为6

Python 如何将20个新闻组数据集从20重新分类为6,python,scikit-learn,nlp,Python,Scikit Learn,Nlp,我下载了流行的20个新闻组数据集,其中有20个类,但我想将整个文档重新分类为6个类,因为有些类非常相关 例如,所有与计算机相关的文档都应该有一个新类,比如1。正如现在一样,文档从1到20分配,反映了类。与计算机相关的课程有2、3、4、5和6 我想说,1是所有与计算机相关的课程(2,3,4,5,6)。我使用20_新闻组.target[0]对它进行了测试,结果是7。表示0处单据的类别为7 我使用20\u新闻组将其重新分配给一个新类。target[0]='1'当我尝试20\u新闻组。target[0]

我下载了流行的20个新闻组数据集,其中有20个类,但我想将整个文档重新分类为6个类,因为有些类非常相关

例如,所有与计算机相关的文档都应该有一个新类,比如1。正如现在一样,文档从1到20分配,反映了类。与计算机相关的课程有2、3、4、5和6

我想说,1是所有与计算机相关的课程(2,3,4,5,6)。我使用
20_新闻组.target[0]
对它进行了测试,结果是7。表示0处单据的类别为7

我使用
20\u新闻组将其重新分配给一个新类。target[0]='1'
当我尝试
20\u新闻组。target[0]
时,它显示1,这是确定的

但是,我如何才能为所有当前具有(2,3,4,5,6)类的文档执行此操作?如果我理解这个类,我可以很容易地将它扩展到其他类。我还尝试在20_新闻组中使用d:

if 20_newsgroups.target in [2,3,4,5,6], 20_newsgroups.target='1'.

但这显示了一个错误,即“具有多个元素的数组的真值是明确的,请使用a.any()或a.all”。

我不确定是否理解您的问题,但您似乎想将类别加入超级类别。这应该不难做到,但在实验的后期这样做并不是最理想的。如果您想减少类别的数量,请在流程的第一步加入一些类别。这样,来自不同(原始)类别的相似样本不会在培训阶段造成混淆(当然,前提是它们现在属于同一个新类别),从而产生更好的总体结果。

您可以这样做。代码基于使用scikit learn检索20新闻组数据集:

主题分布基于提供的表(但可以调整)。以下代码减少了数据集的类别数量

twenty_train_reduced = twenty_train.target.copy
for index, target in enumerate(twenty_train.target):
  for topic_i, topic in enumerate(topics):
    if(target in topic):
      twenty_train_reduced[index] = topic_i

是的,这正是我想做的。有没有更好的方法呢?谢谢你,比我刚才提议的更好?为什么我要发布一个不恰当的答案?为什么这是不可接受的?
twenty_train_reduced = twenty_train.target.copy
for index, target in enumerate(twenty_train.target):
  for topic_i, topic in enumerate(topics):
    if(target in topic):
      twenty_train_reduced[index] = topic_i