用于测试数据分类的 k 均值聚类
k-means clustering for Testing data classification
我想进行 k 均值聚类以根据训练数据对测试数据进行分类,训练数据都有 3 类(1,2 和 3)。
我如何使用集群大小对测试数据集进行分类,例如kmeans 中的 k=10(例如使用 Matlab)?我知道我可以让 k=3,然后使用最近的邻居根据其最近的簇大小来识别数据……但不确定我将使用 k=3 以外的值?您将如何标记这 10 个集群中的每一个?
谢谢
10 个星团的 class 化与 3 个星团的 class 化没有什么不同。 k-means给出的簇数与数据中"classes"的个数无关。 k-means是一种无监督学习算法,意味着它在训练过程中不考虑训练数据的class。
算法看起来像这样:
distances = dist(test_point, cluster_centers)
cluster = clusters[ min(distances) ]
class = mode(cluster.class)
我们找到聚类中心和测试点之间距离最小的聚类,然后我们在该最小距离聚类中包含的元素中找到最常见的 class 标签。
有点不清楚你到底想做什么,虽然这是我理解的大纲。
当您对数据进行聚类时,标签最好不存在,因为您可以使用聚类从数据中获取洞察力或将其用于预处理。
尽管如此,如果您想执行聚类,然后根据聚类中心的接近程度将 class id 分配给新数据点,那么您可以执行以下操作。
首先,您 select k
通过自举或其他方法,可能使用 Silhouette 系数。获得聚类中心后,检查哪个中心最接近新数据点并相应地分配 class id。
在这种情况下,您可能有兴趣使用 Rand Index or the Adjusted Rand Index 来获取集群质量。
我想进行 k 均值聚类以根据训练数据对测试数据进行分类,训练数据都有 3 类(1,2 和 3)。
我如何使用集群大小对测试数据集进行分类,例如kmeans 中的 k=10(例如使用 Matlab)?我知道我可以让 k=3,然后使用最近的邻居根据其最近的簇大小来识别数据……但不确定我将使用 k=3 以外的值?您将如何标记这 10 个集群中的每一个?
谢谢
10 个星团的 class 化与 3 个星团的 class 化没有什么不同。 k-means给出的簇数与数据中"classes"的个数无关。 k-means是一种无监督学习算法,意味着它在训练过程中不考虑训练数据的class。
算法看起来像这样:
distances = dist(test_point, cluster_centers)
cluster = clusters[ min(distances) ]
class = mode(cluster.class)
我们找到聚类中心和测试点之间距离最小的聚类,然后我们在该最小距离聚类中包含的元素中找到最常见的 class 标签。
有点不清楚你到底想做什么,虽然这是我理解的大纲。
当您对数据进行聚类时,标签最好不存在,因为您可以使用聚类从数据中获取洞察力或将其用于预处理。
尽管如此,如果您想执行聚类,然后根据聚类中心的接近程度将 class id 分配给新数据点,那么您可以执行以下操作。
首先,您 select k
通过自举或其他方法,可能使用 Silhouette 系数。获得聚类中心后,检查哪个中心最接近新数据点并相应地分配 class id。
在这种情况下,您可能有兴趣使用 Rand Index or the Adjusted Rand Index 来获取集群质量。