乳腺癌数据集聚类分析代码,不使用sklearn,聚类设置簇个数为2,对聚类结果进行可视化
时间: 2024-05-06 18:16:36 浏览: 187
PaddleTS 是一个易用的深度时序建模的Python库,它基于飞桨深度学习框架PaddlePaddle,专注业界领先的深度模型,旨在为领域专家和行业用户提供可扩展的时序建模能力和便捷易用的用户体验
以下是乳腺癌数据集的聚类分析代码,使用K-Means算法进行聚类,聚类设置簇个数为2,并对聚类结果进行可视化。
```python
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# 读取数据
data = pd.read_csv('breast_cancer_data.csv')
# 将标签列删除
X = data.drop(['label'], axis=1)
# 将数据转换为numpy数组形式
X = np.array(X)
# 定义K-Means算法
def KMeans(X, k=2, max_iter=100):
# 随机选择k个中心点
centers = X[np.random.choice(X.shape[0], k, replace=False)]
for i in range(max_iter):
# 计算每个样本点到中心点的距离
distances = np.sqrt(((X - centers[:, np.newaxis])**2).sum(axis=2))
# 找到每个样本点距离最近的中心点
closest = np.argmin(distances, axis=0)
# 更新中心点位置
for j in range(k):
centers[j] = X[closest == j].mean(axis=0)
return centers, closest
# 聚类
centers, labels = KMeans(X, k=2)
# 可视化聚类结果
plt.scatter(X[labels == 0][:, 0], X[labels == 0][:, 1], color='red', label='cluster 1')
plt.scatter(X[labels == 1][:, 0], X[labels == 1][:, 1], color='blue', label='cluster 2')
plt.scatter(centers[:, 0], centers[:, 1], marker='*', s=200, color='black', label='center')
plt.legend()
plt.show()
```
说明:
- 读取乳腺癌数据集,并将标签列删除,得到特征数据。
- 定义K-Means算法,随机选择k个中心点,不断更新中心点位置,直到达到最大迭代次数或中心点位置不再改变。
- 调用K-Means算法进行聚类,设置簇个数为2。
- 可视化聚类结果,将属于不同簇的样本点用不同颜色表示,将中心点用星号标注。
阅读全文