数据挖掘 K-Means聚类

未格式化之前的代码:

python 复制代码
import pandas as pd#数据处理
from matplotlib import pyplot as plt#绘图
from sklearn.preprocessing import MinMaxScaler#归一化
from sklearn.cluster import KMeans#聚类
import os#处理文件

os.environ["OMP_NUM_THREADS"] = '4'

df = pd.read_excel("consumption_data.xls", usecols=["R", "F", "M"])#选取了"R"、"F"和"M"三列数据
df.dropna(inplace=True)#将缺失值删除
df_scale = MinMaxScaler().fit_transform(df)#归一化,使得数据在0到1的范围内
model = KMeans(n_clusters=3, random_state=0)#n_clusters参数设置为3,表示要将数据分成3个簇。random_state参数设置为0,以确保每次运行时都得到相同的结果
model.fit(df_scale)#训练模型
core = model.cluster_centers_#通过cluster_centers_属性获取聚类模型中心点的坐标,即每个簇的中心点
df["class"] = model.labels_#将每个数据点的簇标签保存在原始数据集的"class"列中,使用labels_属性获取每个数据点所属的簇的标签

fig = plt.figure(figsize=(9, 9))#创建一个大小为9x9的图形窗口
ax = plt.axes(projection='3d')#创建一个3D坐标轴
center_x = []#创建空列表用于存储各个簇的中心点坐标。
center_y = []
center_z = []
for i, j in df.groupby(by="class"):#对数据集按簇标签进行分组
    ax.scatter3D(j["F"], j["R"], j["M"], label=i)#将每个簇的数据点在3D空间中绘制为散点图
    center_x.append(j["F"].mean())#计算每个簇的中心点坐标,并将其添加到相应的列表中。
    center_y.append(j["R"].mean())
    center_z.append(j["M"].mean())
    # ax.scatter3D(j["F"].mean(),j["R"].mean(),j["M"].mean(),marker="X") 使用scatter3D()函数将每个簇的中心点坐标(j["F"].mean(), j["R"].mean(), j["M"].mean())以"X"形状的标记绘制在图中。
ax.scatter3D(center_x, center_y, center_z, label='center', marker="X", alpha=1)#以"X"形状的标记绘制簇的中心点。alpha参数设置为1,表示散点图的透明度为完全不透明
plt.legend()#显示图例
plt.show()#显示图形

for i, j in df.groupby(by="class"):#对数据集按簇标签进行分组。
    j[["R", "F", "M"]].plot(kind="kde", subplots=True, sharex=False)#对每个簇的三个特征绘制核密度图。kind="kde"指定绘制核密度图,subplots=True表示将三个子图绘制在同一画布上,sharex=False表示不共享x轴。
    plt.subplots_adjust(hspace=0.3)  # 调整子图的纵向间隙,hspace=0.3将纵向间隔设置为子图高度的30%。这将使得每个子图之间有一定的空白间隔
    plt.show()#显示图形

格式化之后的代码:

python 复制代码
import pandas as pd  # 数据处理
from matplotlib import pyplot as plt  # 绘图
from sklearn.preprocessing import MinMaxScaler  # 归一化
from sklearn.cluster import KMeans  # 聚类
import os  # 处理文件

os.environ["OMP_NUM_THREADS"] = '4'

df = pd.read_excel("consumption_data.xls", usecols=["R", "F", "M"])  # 选取了"R"、"F"和"M"三列数据
df.dropna(inplace=True)  # 将缺失值删除
df_scale = MinMaxScaler().fit_transform(df)  # 归一化,使得数据在0到1的范围内
model = KMeans(n_clusters=3, random_state=0)  # n_clusters参数设置为3,表示要将数据分成3个簇。random_state参数设置为0,以确保每次运行时都得到相同的结果
model.fit(df_scale)  # 训练模型
core = model.cluster_centers_  # 通过cluster_centers_属性获取聚类模型中心点的坐标,即每个簇的中心点
df["class"] = model.labels_  # 将每个数据点的簇标签保存在原始数据集的"class"列中,使用labels_属性获取每个数据点所属的簇的标签

fig = plt.figure(figsize=(9, 9))  # 创建一个大小为9x9的图形窗口
ax = plt.axes(projection='3d')  # 创建一个3D坐标轴
center_x = []  # 创建空列表用于存储各个簇的中心点坐标。
center_y = []
center_z = []
for i, j in df.groupby(by="class"):  # 对数据集按簇标签进行分组
    ax.scatter3D(j["F"], j["R"], j["M"], label=i)  # 将每个簇的数据点在3D空间中绘制为散点图
    center_x.append(j["F"].mean())  # 计算每个簇的中心点坐标,并将其添加到相应的列表中。
    center_y.append(j["R"].mean())
    center_z.append(j["M"].mean())
    # ax.scatter3D(j["F"].mean(),j["R"].mean(),j["M"].mean(),marker="X") 使用scatter3D()函数将每个簇的中心点坐标(j["F"].mean(), j["R"].mean(), j["M"].mean())以"X"形状的标记绘制在图中。
ax.scatter3D(center_x, center_y, center_z, label='center', marker="X",
             alpha=1)  # 以"X"形状的标记绘制簇的中心点。alpha参数设置为1,表示散点图的透明度为完全不透明
plt.legend()  # 显示图例
plt.show()  # 显示图形

for i, j in df.groupby(by="class"):  # 对数据集按簇标签进行分组。
    j[["R", "F", "M"]].plot(kind="kde", subplots=True,
                            sharex=False)  # 对每个簇的三个特征绘制核密度图。kind="kde"指定绘制核密度图,subplots=True表示将三个子图绘制在同一画布上,sharex=False表示不共享x轴。
    plt.subplots_adjust(hspace=0.3)  # 调整子图的纵向间隙,hspace=0.3将纵向间隔设置为子图高度的30%。这将使得每个子图之间有一定的空白间隔
    plt.show()  # 显示图形
相关推荐
数脉8 分钟前
让每一次提问都有据可答:我们的数据血缘平台 AI 助手功能预告
大数据·数据挖掘·数据分析
专注API从业者1 小时前
告别手工盯盘:用 Open‑Claw 搭建电商商品自动化监控与数据分析实战
运维·数据结构·数据挖掘·数据分析·自动化
沪上企服通2 小时前
税制变更前的影子账套回归:代账 pipeline 怎么在规则上线前先跑一遍
人工智能·数据挖掘·回归
Q26433650232 小时前
【有源码】基于大数据的超市商品分析与利润预测系统:XGBoost机器学习算法实战项目
大数据·机器学习·数据挖掘·数据分析·spark·毕业设计·课程设计
2603_9651481112 小时前
社区与学习资源:从入门到精通的API选品学习路径
数据库·人工智能·python·学习·数据挖掘
Luminbox紫创测控12 小时前
车载LiDAR强光测试的实验设计方法与数据分析
人工智能·数据挖掘·数据分析·车载系统·安全性测试·太阳光模拟器
地理探险家16 小时前
从零实现图片自动分类:数据准备、模型训练与单图预测
人工智能·深度学习·机器学习·分类·数据挖掘·数据集
198******1263416 小时前
2026 企业 AI 办公工具选型指南:搭建适配业务的智能工作体系
大数据·人工智能·数据挖掘
ViperL119 小时前
[高光谱]基于NAS的Few-Shot高光谱图像分类
人工智能·分类·数据挖掘
总要学点什么21 小时前
第57篇:三维场景演示_基础版——同一秒,播过去和拖过去差出一千多米
3d·数据挖掘·数据分析·gis·webgl