给出一个三维的散点图,在其中 K-means 聚类的结果。每个数据点被归类到不同 的群体,并在三维空间中显示其年龄、年收入和消费得分的分布情况,写出实现的代码
时间: 2024-09-29 16:12:50 浏览: 56
KMeans++.zip_K-means聚类结果_Kmeans++_kmeans 图_散点图聚类_聚类散图
5星 · 资源好评率100%
为了创建一个三维散点图并展示K-means聚类结果,我们可以使用Python的matplotlib和sklearn库。假设我们已经有了一个包含年龄(age)、年收入(income)和消费得分(consumption_score)的数据集,并已经通过K-means进行了聚类。
首先安装必要的库(如果尚未安装):
```bash
pip install matplotlib numpy pandas sklearn
```
然后编写以下代码:
```python
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from sklearn.cluster import KMeans
# 假设你有一个名为data.csv的数据集,包含年龄、年收入和消费得分
df = pd.read_csv('data.csv')
# 将数据转换为二维数组,适合KMeans算法
X = df[['age', 'income', 'consumption_score']].values
# 使用KMeans进行聚类,这里假设k=3(可以根据实际需求调整)
kmeans = KMeans(n_clusters=3)
kmeans.fit(X)
# 获取聚类中心
centroids = kmeans.cluster_centers_
# 创建3D散点图
fig = plt.figure(figsize=(10, 6))
ax = fig.add_subplot(111, projection='3d')
# 颜色编码代表聚类标签
colors = ['r', 'g', 'b']
for i in range(kmeans.n_clusters):
# 筛选出属于特定聚类的数据点
cluster_members = X[kmeans.labels_ == i]
ax.scatter(cluster_members[:, 0], cluster_members[:, 1], cluster_members[:, 2],
c=colors[i], label=f'Cluster {i+1}')
# 添加聚类中心作为星形标记
ax.scatter(centroids[:, 0], centroids[:, 1], centroids[:, 2], s=300, marker='*', color='black',
label='Centroids')
ax.set_xlabel('Age')
ax.set_ylabel('Income')
ax.set_zlabel('Consumption Score')
ax.legend()
plt.title('3D Scatter Plot of Age-Income-Consumption Clusters (K-means)')
plt.show()
```
这段代码将生成一个3D散点图,每个点的颜色表示它所属的聚类,聚类中心则以较大的星形标记表示。你可以根据需要更改数据集名和聚类数量。
阅读全文