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

如何对一维MSE数据执行K-Means聚类?附CSV数据实例

嘿,我懂你的疑惑——只用MSE这一个特征做K-Means聚类,确实会纠结该怎么给模型输入X和Y对吧?其实完全没问题!K-Means完全支持一维数据的聚类,只是需要把你的MSE数据转换成模型要求的格式就行,下面我一步步给你讲清楚怎么做:

步骤1:读取并预处理数据

首先用pandas读取你的CSV文件,提取出MSE列。这里要注意:sklearn的K-Means模型要求输入是**形状为(n_samples, n_features)**的二维数组,而单独一列MSE是一维的,所以我们需要用reshape(-1, 1)把它转换成二维格式。

import pandas as pd
from sklearn.cluster import KMeans

# 替换成你的CSV文件路径
df = pd.read_csv('your_mse_data.csv')

# 提取MSE列,转换为K-Means要求的二维数组格式
X = df['mse'].values.reshape(-1, 1)
步骤2:执行K-Means聚类(分成2个簇)

接下来初始化K-Means模型,设置簇数n_clusters=2,然后拟合数据,就能得到每个MSE值对应的簇标签,以及两个簇的均值中心。

# 初始化模型,设置随机种子保证结果可复现
kmeans = KMeans(n_clusters=2, random_state=42)
# 拟合数据并给每个样本分配簇标签
df['cluster_label'] = kmeans.fit_predict(X)
# 获取两个簇的MSE均值(flatten把二维数组转成一维方便查看)
cluster_means = kmeans.cluster_centers_.flatten()
步骤3:查看聚类结果

现在你的DataFrame里多了cluster_label列(标记每个数据属于簇0还是簇1),cluster_means则是两个簇的平均MSE值。可以直接打印查看:

print("带簇标签的完整数据:")
print(df[['date', 'mse', 'cluster_label']])

print("\n两个簇的MSE均值:")
print(f"簇0的平均MSE: {cluster_means[0]:.2f}")
print(f"簇1的平均MSE: {cluster_means[1]:.2f}")
可选:可视化聚类结果

为了更直观地看到聚类效果,你可以用matplotlib绘制散点图,同时标出两个簇的均值线:

import matplotlib.pyplot as plt

plt.figure(figsize=(10, 6))
# 按簇分组绘制散点
for cluster in df['cluster_label'].unique():
    cluster_data = df[df['cluster_label'] == cluster]
    plt.scatter(cluster_data['date'], cluster_data['mse'], label=f'Cluster {cluster}', alpha=0.7)

# 绘制簇均值的虚线
for idx, mean_val in enumerate(cluster_means):
    plt.axhline(y=mean_val, color=f'C{idx}', linestyle='--', label=f'Cluster {idx} Mean: {mean_val:.2f}')

plt.xticks(rotation=45)
plt.xlabel('Date')
plt.ylabel('MSE')
plt.title('K-Means Clustering of MSE Values (2 Clusters)')
plt.legend()
plt.tight_layout()
plt.show()

简单补充下:这里我们并没有用到Y值,因为K-Means是无监督聚类算法,不需要标签输入——你只需要把要聚类的特征(这里就是MSE)作为X输入给模型就行,转成二维格式只是为了适配sklearn的API要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:01:17