2017-04-07 63 views
0

我是机器学习的初学者。我正在使用R(h2o包)中的autoencoder进行群集。现在,我已经做了以下代码:如何在R中使用自编码器后获得簇的标签

`mydata = h2o.importFile(path = mfile) 

NN_model = h2o.deeplearning(
    x = 2:9, 
    training_frame = mydata, 
    hidden = c(2), 
    epochs = 100, 
    activation = "Tanh", 
    autoencoder = TRUE 
) 

train_supervised_features = h2o.deepfeatures(NN_model, mydata, layer=1)` 

对于我的数据,不会有太多的列(你可以在代码看,只有8个变量现在),但大量的行。

然后我绘制上面获得的“train_supervised_features”中的2个节点。我得到了这样的情节 很显然,我的数据有8个集群(对吧?)

我的问题是,我如何从自动编码器结果中提取标签?我想将标签添加到原始数据,并使用这些标签绘制颜色,如下所示:

回答

0

由于autoencoder对“簇”没有任何意见,因此您必须调用h2o.kmeans( )首先放在二维数据集上,以获得聚类分配。然后,您可以使用该k-means模型使用h2o.predict(model,2Ddata)对数据集进行评分,并且您将获得每行的聚类标签。

+0

谢谢阿诺!但是,我想知道autoencoder是做什么的?作为上面的第一个数字,如果这是我从autoencoder隐藏层(2个节点)得到的,是不是说我的数据实际上有一些明显的聚类(如第一个图所示,它显示6-8个聚类)? –

+0

是的,看起来集群在降低维度方面很有用。但是,群集分配仅存在于您的头部。有没有自动的方式来从自动编码器AFAIK获得一个集群ID,你必须另外运行一个集群算法。 –

+0

因此,在应用AE并获得2D特征(如第一个图)之后,我可以将聚类技术(例如k-均值)应用于2D特征以获取其集群/标签,并将这些标签直接用于原始数据?谢谢! –

相关问题