如何对监督分类器的输出进行聚类/分组?

时间:2017-11-14 22:16:47

标签: python machine-learning scikit-learn cluster-analysis

这是我的问题的模型:

我从数据点列表

开始
X = ['Apple','Peach','Orange','Dog','Elephant','Fox','Cat','Mango']

然后我得到了一个监督分类器的输出,它引导我学习如下课程:

Y = clf.predict(X) # 'FRUIT','FRUIT','FRUIT','ANIMAL','0','ANIMAL','ANIMAL','FRUIT'

即使在我的分类器没有FN的完美世界中,我也希望能够将我的课程分组到更高阶的课程

Z = cluster(Y)  # 'LIST_OF_FRUITS','LIST_OF_ANIMALS','LIST_OF_FRUITS'

我正在努力寻找可以做这样的事情,有或没有带标签的例子,因为没有定义我不知道如何做到这一点有多大。

这也是我实际想要解决的问题的扩展,如果所需的分组包含几个不同类型的类别,而不仅仅是“FRUIT”的并发列表,而是经常说“晚餐”将是0+“MEATS”,0 +“VEG”等理想的解决方案将是一个知道非典型晚餐,可以推断/纠正假阴性并从分类数据中找到晚餐分组,即:

Y = ['MEAT','0','0','0','0','MEAT','0','VEG','MEAT'] -> ['DINNER'] (1 instance)

问题的一些单词编码应该可以工作,但是我不知道如何对分类器1的输出进行分区,这样分区就不会被强制为一定的大小

有什么我可以用的吗?

2 个答案:

答案 0 :(得分:0)

听起来你只需要使用具有多个输出尺寸的分类器。这在低级别受支持,但您将无法使用许多便利功能。

例如,我有一个模型,它是一个Bag-Of-Words,可以同时输出4个向量 - 分类 - 用于Bag-Of-Words vecor列表(句子)。它们都是线性独立的输出。

另一种方法是为每个输出维度创建多个模型。

答案 1 :(得分:0)

我不会在这里看到聚类。

如果我理解正确,你想分区

[Fruit, Meat, Fruit]

分为两组

[Fruit, Fruit] and [Meat]

此时您可能会使用基数?然后只需使用字典进行计数。即将此汇总成

{ Fruit: 2, Meat: 1 }

此外,许多语言都有一些语法来迭代唯一值和子集运算符,以便您可以编写

for x in unique(classification):
  subsets[x] = inputdata[classification == x]

无论哪种方式,都不要为此考虑群集。这里没有进行高级统计分析。它只是计算和选择?