Scikit-learn KMeans 聚类 - 用 X 特征拟合集群,用 X-1 特征预测集群成员?
Posted
技术标签:
【中文标题】Scikit-learn KMeans 聚类 - 用 X 特征拟合集群,用 X-1 特征预测集群成员?【英文标题】:Scikit-learn KMeans clustering - fit cluster with X features, predict cluster membership with X-1 features? 【发布时间】:2015-03-28 20:35:23 【问题描述】:我目前正在尝试使用 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 聚类对象。但我不知道该怎么做。是否可以通过为它提供已定义的集群质心来创建新的 cluster.KMeans 对象?
【问题讨论】:
【参考方案1】:您可以先使用 K-Means 计算所有质心。然后计算从sklearn.metrics
从每个点到所有质心的欧几里得距离(除了你想要排除的那些)。最后,获得使每个点的距离(沿第二轴的np.argmin
)最小化的集群。
【讨论】:
【参考方案2】:-
找到最近的聚类中心
使用中心的缺失值
如果你坚持 k-means 原则,你最好的预测值是分配给中心的值;除非你为每个集群独立构建回归模型。
【讨论】:
那么,这种简单的方法没有办法做到,我需要自己编写函数来寻找最近的中心? 您可以使用KNeighborsClassifier
和n_neighbors=1
。以上是关于Scikit-learn KMeans 聚类 - 用 X 特征拟合集群,用 X-1 特征预测集群成员?的主要内容,如果未能解决你的问题,请参考以下文章
是否可以在 Python(Scikit-Learn)中对 KMeans 中的非浮点数据进行聚类?
使用 Scikit-learn KMeans 对多维数组进行聚类