k-means聚类用于测试数据分类

时间:2016-12-27 12:22:19

标签: matlab machine-learning cluster-analysis nearest-neighbor

我想做k-means聚类来根据训练数据对测试数据进行分类,训练数据都有3个类(1,2和3)。

如何使用例如群集大小对测试数据集进行分类? k = 10 in kmeans(例如使用Matlab)?我知道我可以有k = 3,然后使用最近邻居根据最近的簇大小来识别数据...但不确定我将用于其他k = 3的值?你会如何标记这10个集群中的每一个?

由于

2 个答案:

答案 0 :(得分:1)

10个群集的分类与3个群集的分类没有区别。由k-means给出的簇的数量与"类的数量无关。在数据中。 k-means是一种无监督学习算法,这意味着它在训练期间不考虑训练数据的类别。

算法看起来像这样:

def t_or_f(arg):
    ua = str(arg).upper()
    if 'TRUE'.startswith(ua):
       return True
    elif 'FALSE'.startswith(ua):
       return False

我们发现群集中心与测试点之间的距离最小的群集,然后我们在最小距离群集中包含的元素中找到最常见的类别标签。

答案 1 :(得分:0)

有点不清楚你究竟想做什么,虽然这是我理解的大纲。

当您对数据进行聚类时,理想情况下标签不存在,因为您使用聚类来获取数据的见解或使用它进行预处理。

虽然,如果要执行群集,然后根据群集中心的接近度将类ID分配给新的数据点,则可以执行以下操作。

首先,您可以通过引导或其他方法选择k,也可以使用Silhouette系数。获得集群中心后,检查哪个中心最接近新数据点,并相应地分配类ID。

在这种情况下,您可能有兴趣使用Rand IndexAdjusted Rand Index来获得群集质量。