乳腺癌数据集聚类分析代码,不使用sklearn,聚类设置簇个数为2,对聚类结果进行可视化
时间: 2024-05-06 17:16:36 浏览: 175
以下是乳腺癌数据集的聚类分析代码,使用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。
- 可视化聚类结果,将属于不同簇的样本点用不同颜色表示,将中心点用星号标注。
阅读全文