You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

K-means缩放后如何用原始变量绘制带质心的散点图

解决方法

你当前得到的质心是标准化后的坐标,和原始数据的Wn、LL量纲不匹配,只需要将质心通过StandardScaler的inverse_transform方法转换回原始尺度即可。

完整修改代码

import numpy as np
import seaborn as sns
import pandas as pd
from sklearn.preprocessing import StandardScaler
from sklearn.cluster import KMeans

# 你原有的标准化代码
scaler = StandardScaler()
X1_scaled = pd.DataFrame(scaler.fit_transform(X1),columns = X1.columns)

# 你原有的K-means聚类代码
kmeans = KMeans(
        init="random",
        n_clusters=3,
        n_init=10,
        max_iter=300,
        random_state=123)   
X1['label'] = kmeans.fit_predict(X1_scaled[['Wn', 'LL']])

# 获取标准化后的质心
centroids = kmeans.cluster_centers_

# ==========新增:将标准化质心转换为原始尺度==========
# 构造和X1列数匹配的数组,填充质心对应的Wn、LL列数值
centroids_scaled_full = np.zeros((len(centroids), X1.shape[1]))
wn_idx = X1.columns.get_loc('Wn')
ll_idx = X1.columns.get_loc('LL')
centroids_scaled_full[:, wn_idx] = [i[0] for i in centroids]
centroids_scaled_full[:, ll_idx] = [i[1] for i in centroids]

# 反变换得到原始尺度的质心
centroids_original = scaler.inverse_transform(centroids_scaled_full)
cen_x_original = centroids_original[:, wn_idx]
cen_y_original = centroids_original[:, ll_idx]

# ==========绘图使用原始尺度质心==========
g = sns.scatterplot(x=X1.Wn, y= X1.LL, hue=X1.label,
              data=X1, palette='colorblind', 
                   legend='full')
g = sns.scatterplot(x=cen_x_original, y=cen_y_original, s=80, color='black')

简化方案(推荐)

如果你后续只需要对Wn和LL两列做聚类,建议标准化时仅针对这两列拟合StandardScaler,反变换会更简单:

# 仅对需要用到的两列做标准化
scaler = StandardScaler()
X1_scaled_2cols = scaler.fit_transform(X1[['Wn', 'LL']])

# 聚类直接用两列的标准化结果
X1['label'] = kmeans.fit_predict(X1_scaled_2cols)

# 反变换质心无需补全其他列
centroids_original = scaler.inverse_transform(kmeans.cluster_centers_)
cen_x_original = centroids_original[:,0]
cen_y_original = centroids_original[:,1]

内容的提问来源于stack exchange,提问作者JCV

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 11:06:06