实现了基于K-Means算法的聚类分析。首先,将数据进行z-score标准化,将数据转换为均值为0,标准差为1的标准正态分布。然后,设定聚类个数k为3,并使用K-Means算法对数据进行聚类。聚类结果以散点图的形式展示,其中每个样本点的颜色代表其所属的聚类簇。同时,将每个聚类簇的中心点以灰色的散点图形式展示出来。 在输出各个类别的项目数时,通过sum函数和逻辑运算符==计算出每个聚类簇中样本点的数量。给出实验步骤
时间: 2024-01-21 10:19:41 浏览: 145
实验步骤如下:
1. 加载数据集并进行z-score标准化处理。
2. 设定聚类个数k为3,使用K-Means算法对数据进行聚类。
3. 绘制散点图展示聚类结果,其中每个样本点的颜色代表其所属的聚类簇。
4. 绘制灰色散点图展示每个聚类簇的中心点。
5. 输出各个类别的项目数,通过sum函数和逻辑运算符==计算出每个聚类簇中样本点的数量。
具体实现代码如下:
```python
import pandas as pd
import numpy as np
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt
# 加载数据集并进行z-score标准化处理
data = pd.read_csv('data.csv')
data = (data - data.mean()) / data.std()
# 设定聚类个数k为3,使用K-Means算法对数据进行聚类
k = 3
kmeans = KMeans(n_clusters=k, random_state=0).fit(data)
# 绘制散点图展示聚类结果
plt.scatter(data.iloc[:,0], data.iloc[:,1], c=kmeans.labels_)
plt.title('K-Means Clustering Results')
plt.xlabel('Feature 1')
plt.ylabel('Feature 2')
# 绘制灰色散点图展示每个聚类簇的中心点
centers = kmeans.cluster_centers_
plt.scatter(centers[:,0], centers[:,1], c='gray', s=200, alpha=0.5)
# 输出各个类别的项目数
for i in range(k):
count = np.sum(kmeans.labels_ == i)
print(f'Cluster {i+1} has {count} items.')
plt.show()
```
运行该代码,即可得到聚类结果、聚类中心和各个类别的项目数。
阅读全文