Python质心中的KMeans位置不正确,我如何“取消缩放”它们?

Posted

技术标签:

【中文标题】Python质心中的KMeans位置不正确,我如何“取消缩放”它们?【英文标题】:KMeans in Python centroids not in correct position, how do I "unscale" them? 【发布时间】:2020-04-28 14:21:44 【问题描述】:

我有一个小脚本可以在 jupyter 笔记本中运行。 Kmeans 似乎工作正常,但我的质心按比例缩小。如何让它们在我的绘图上正确显示?我的 x 和 y 范围从 0 到每边大约 500。

from pandas import DataFrame
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
from sklearn.preprocessing import scale
import pandas as pd

plt.figure(figsize=(8, 6))
df = pd.read_csv("sales-by-week-4.csv")
df2 = DataFrame(df,columns=["Average Sale Price", "Average Weekly"])
plt.figure(figsize=(8, 6))
kmeans = KMeans(n_clusters=5).fit(scale(df2))
centroids = kmeans.cluster_centers_
print(centroids)

plt.scatter(df2["Average Weekly"], df2["Average Sale Price"], c= kmeans.labels_.astype(float), s=50, alpha=0.5)
plt.scatter(centroids[:, 0], centroids[:, 1], c='red', s=50)

这是我的质心打印。

[[ 2.65044538 -0.37653707]
 [-0.64002758 -0.25885017]
 [-0.39559393  5.26965425]
 [ 0.91316601 -0.29410492]
 [-0.5276885   0.8949181 ]]

【问题讨论】:

【参考方案1】:

您在缩放的数据框上安装了 KMeans。尝试仅适合df2

【讨论】:

以上是关于Python质心中的KMeans位置不正确,我如何“取消缩放”它们?的主要内容,如果未能解决你的问题,请参考以下文章

在 python / pyspark 中获取 k-means 质心和异常值

如何使用 tSNE 和 kmeans 质心找到质心对应的原始数据点?

python - 如何在python中使没有簇质心的簇不可见?

按升序生成 Kmeans 的质心

如何使用 skleans 的 KMeans 查看 n_init 每次迭代的集群质心

详解聚类算法Kmeans-重要参数init & random_state & n_init:初始质心怎么放更好菜菜的sklearn课堂笔记