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



这是我的问题模型:

我从数据点列表开始

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'

我很难找到能做这样事情的东西,无论有没有标记的例子,因为如果没有定义团队的规模,我看不出如何做到这一点。

此外,我实际上试图解决的一个扩展是,如果所需的分组包含几个不同类型的类,而不仅仅是"水果"的并发列表,而是"晚餐",通常是0+"MEATS",0+"VEG"等,理想的解决方案是知道非典型晚餐,可以推断/纠正假阴性,并从分类数据中找到晚餐分组,即:

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

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

有什么我可以用的吗?

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

例如,我有一个模型,它是一个单词袋,它一次为单词袋向量列表(句子)输出4个向量-分类。它们都是线性独立的输出。

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

我在这里看不到集群。

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

[Fruit, Meat, Fruit]

分为两组

[Fruit, Fruit] and [Meat]

在哪一点上,您可能会使用基数?那就用字典数数吧。即,将其聚合到中

{ Fruit: 2, Meat: 1 }

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

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

无论哪种方式,都不要为此研究集群。这里没有先进的统计分析。它只是在数和选择?

最新更新