我目前正在尝试使用 KMeans 聚类解决某种回归任务(预测"计数"字段的值)。这个想法是微不足道的:
在我的测试数据集上拟合一个集群:
k_means = cluster.KMeans(n_clusters=4, n_init = 20, init='random')
k_means.fit(df[['DistanceToMidnight','season','DayType','weather','temp','atemp','humidity','windspeed','count']])
*请注意,我在聚类中使用了"计数"。
然后我想使用我的测试集(它大致相同,只是它没有"计数"字段) - 我想使用除"计数"以外的所有功能确定集群成员资格,然后将测试集中每一行的"计数"分配给分配的集群中心的"计数"相关坐标。
任何想法如何使用 KMeans集群的标准功能简单地做到这一点?我不能只调用"k_means.predict",因为它会因功能编号不匹配而失败。
我能想到的最简单方法是使用已经训练好的聚类中提供的聚类中心构造一个k_means聚类对象。但我不确定如何做到这一点。是否可以创建新集群。KMeans通过为其提供已经定义的集群质心来反对?
您可以首先使用 K 均值计算所有质心。然后计算从每个点到所有质心(要排除的质心除外)从sklearn.metrics
点到所有质心的欧氏距离。最后,获取最小化每个点的距离(沿第 2 轴np.argmin
)的聚类。
- 查找最近的集群中心
- 使用中心的缺失值
如果您坚持 k 均值原则,则最佳预测值是分配给中心的值;除非您例如独立为每个聚类构建回归模型。