不使用sklearn库函数,对乳腺癌数据集进行kmeans聚类分析并可视化,聚类设置簇的个数为2
时间: 2024-05-06 14:17:01 浏览: 100
基于Kmean聚类实现乳腺肿瘤分割附matlab代码.zip
5星 · 资源好评率100%
好的,让我们来实现一下。
首先,我们需要加载数据集。这里我们使用sklearn库中的乳腺癌数据集。
```python
from sklearn.datasets import load_breast_cancer
data = load_breast_cancer().data
```
接着,我们需要对数据进行标准化处理,以确保每个特征对聚类的影响是相同的。
```python
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
data_scaled = scaler.fit_transform(data)
```
然后,我们可以开始使用kmeans算法进行聚类。这里我们设置簇的个数为2。
```python
from numpy import random
import matplotlib.pyplot as plt
# 初始化两个聚类中心
centroid1 = random.randn(data_scaled.shape[1])
centroid2 = random.randn(data_scaled.shape[1])
# 迭代次数
num_iter = 10
# 进行kmeans聚类
for i in range(num_iter):
cluster1 = []
cluster2 = []
for point in data_scaled:
# 计算每个点到两个聚类中心的距离
distance1 = sum((point - centroid1) ** 2)
distance2 = sum((point - centroid2) ** 2)
# 将点分配到距离更近的聚类中心所在的簇中
if distance1 < distance2:
cluster1.append(point)
else:
cluster2.append(point)
# 更新两个聚类中心
centroid1 = sum(cluster1) / len(cluster1)
centroid2 = sum(cluster2) / len(cluster2)
```
最后,我们可以将聚类结果可视化出来。
```python
# 将两个簇的点分别可视化出来
plt.scatter([x[0] for x in cluster1], [x[1] for x in cluster1], color='red')
plt.scatter([x[0] for x in cluster2], [x[1] for x in cluster2], color='blue')
plt.show()
```
完整代码如下:
阅读全文