如何检查新数据的深度嵌入式群集?

时间:2018-07-02 19:37:26

标签: machine-learning deep-learning mxnet

我正在使用来自mxnet(https://github.com/apache/incubator-mxnet/tree/master/example/deep-embedded-clustering)的DEC

虽然它默认运行在MNIST上,但我已将数据源更改为数百个文档(考虑到mxnet可以与路透数据集一起使用,这应该很好)

问题;训练MXNET之后,如何在看不见的新数据上使用它?每次都向我显示一个新的预测!

以下是收集数据集的代码:

Console.WriteLine

以下是预测代码:

vectorizer = TfidfVectorizer(dtype=np.float64, stop_words='english', max_features=2000, norm='l2', sublinear_tf=True).fit(training)

X = vectorizer.transform(training)
X = np.asarray(X.todense()) # * np.sqrt(X.shape[1])

Y = np.asarray(labels)

说明:我认为我还需要传递训练系统所用数据的样本。这就是为什么您在那里看到TrainX和X的原因。

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

聚类方法(本身)没有提供一种方法来标记未包含在用于导出聚类的计算中的样本。您可以使用新的样本重新运行聚类算法,但是由于随机初始化的不同,聚类可能会更改并被赋予不同的聚类标签。因此,这可能就是您每次看到不同预测的原因。

一种选择是以监督的方式使用聚类方法中的聚类标签,以预测新样本的聚类标签。您可以在特征空间中找到最接近新样本的聚类中心,并将其用作聚类标签,但这会忽略聚类的形状。更好的解决方案是训练一个分类模型,以根据先前的聚类数据预测新样本的聚类标签。这些方法的成功将取决于群集的质量(即,使用的特征空间,群集的可分离性等)。