【问题标题】:How can you use k-means clustering algorithm in r to classify an unlabeled group of data?如何在 r 中使用 k-means 聚类算法对未标记的数据组进行分类?
【发布时间】:2016-12-19 01:28:10
【问题描述】:

我是 R 语言的新手。我有两个数据集。一个被标记为“训练”数据集(虹膜数据集),另一个是“测试”数据集,它是一个未标记的数据集。我需要对“鸢尾花”数据集进行聚类,然后使用聚类中心根据最近距离将每个测试用例放入一个聚类中,然后将每个测试用例分配给一个聚类。

set.seed(20)
pCluster <- kmeans(Trainingdata[, 3:4], 3, nstart = 20)
pCluster

上面的代码确实对“训练”数据集进行了聚类,但不知道如何使用我从上面代码中得到的中心来标记“测试”数据集。 任何帮助,将不胜感激。

【问题讨论】:

标签: r algorithm cluster-analysis k-means


【解决方案1】:

您可以像这样从 pCluster 对象中获取中心值:

pCluster$centers

这将为您提供 Petal.Width 和 Petal.Length 的值

  Petal.Length Petal.Width
1     1.462000    0.246000
2     4.269231    1.342308
3     5.595833    2.037500

您现在可以做的是计算测试数据到中心的距离(取决于您的度量)并分配最接近的一个。

combinedMatrix = rbind(pCluster$Centers,testData[,3:4])
dist(combinedMatrix)

这为您提供了一个距离矩阵,其中包含每个点到聚类中心的距离。附带说明一下,在使用 kmeans(至少使用最常见的距离度量)时,您应该对输入数据进行归一化,否则具有高绝对值的要素会掩盖具有低绝对值的要素。

但是,我不确定您想要实现什么。 K-means 通常不以这种方式使用,即在测试和训练数据中进行拆分。

您的目标是为测试集创建分类器吗?如果是这样,有更好的方法来实现这一点。如果您想坚持距离的概念,可以查看 K-Nearest-Neighbor 算法。如果您告诉我们您的最终目标是什么,我很乐意为您提供更多指点。

【讨论】:

    猜你喜欢
    • 2019-05-03
    • 2016-04-04
    • 1970-01-01
    • 2013-02-07
    • 1970-01-01
    • 2017-09-01
    • 1970-01-01
    • 2015-06-22
    • 2016-07-28
    相关资源
    最近更新 更多