【发布时间】:2022-01-22 23:00:45
【问题描述】:
我一直在尝试将我的训练集拟合到 KMeans 集群中,并将其预测到测试测试中,但是它至少在我尝试了一周后都没有奏效。我很好奇我是否在解释 KMeans 的使用方式?我被告知它是无人监督的。这是否意味着如果它知道训练数据是如何聚类的,它就不能用于预测聚类?
谢谢。
【问题讨论】:
标签: classification cluster-analysis k-means
我一直在尝试将我的训练集拟合到 KMeans 集群中,并将其预测到测试测试中,但是它至少在我尝试了一周后都没有奏效。我很好奇我是否在解释 KMeans 的使用方式?我被告知它是无人监督的。这是否意味着如果它知道训练数据是如何聚类的,它就不能用于预测聚类?
谢谢。
【问题讨论】:
标签: classification cluster-analysis k-means
KMeans 集群是无监督的机器学习模型。这意味着也不会有任何标记数据用于训练和预测。它获取训练数据并根据模型调整尝试对训练数据进行聚类并为每个聚类分配聚类标签。
在这个训练有素的模型上,您可以传递值,以便它预测给定输入的最佳集群标签。这是示例python代码sn-p。
import numpy as np
import matplotlib.pyplot as pyplot
from sklearn.cluster import KMeans
from sklearn.preprocessing import scale
model = KMeans(n_clusters=2)
model = model.fit(scale(data)) # data is your training data
print(model.labels_) # prints labels for clusters. you can map to meaningful labels
model.predict(scale(test)) # test is your data to predict the cluster
【讨论】:
是的,您可以使用 k-means 来预测集群。对训练数据进行聚类后,您将收到所选聚类数量的聚类中心。例如,如果您选择了 k=3,您的数据集将分为 3 个集群,因此您将收到 3 个集群中心。
因此,现在您可以获取测试数据,并且对于每个测试数据点,您可以找到三个聚类中心之间的欧几里德距离。距离最小的那个将是您的预测集群。
如果您使用的是 scikit-learn,还有一个使用 K-Means 的预测方法,它基本上应该做到以上。
【讨论】: