乳腺癌数据集聚类分析代码,不使用sklearn
时间: 2024-05-09 17:16:43 浏览: 202
以下是一个简单的乳腺癌数据集的聚类分析代码,使用K-Means算法,不使用sklearn库。
注意:这个代码仅供参考,不一定是最优解决方案,也没有进行优化。
```python
import numpy as np
import pandas as pd
# 读取数据集
data = pd.read_csv('breast_cancer_data.csv')
# 删除无关列
data = data.drop(['id', 'diagnosis', 'Unnamed: 32'], axis=1)
# 归一化数据
data = (data - np.min(data)) / (np.max(data) - np.min(data)).values
# 定义K-Means函数
def k_means(data, k, max_iterations=100):
# 随机初始化质心
centroids = data[np.random.choice(len(data), k, replace=False)]
for i in range(max_iterations):
# 计算每个点到质心的距离
distances = np.sqrt(((data - centroids[:, np.newaxis])**2).sum(axis=2))
# 根据距离进行分类
clusters = np.argmin(distances, axis=0)
# 更新质心位置
for j in range(k):
centroids[j] = data[clusters == j].mean(axis=0)
return clusters, centroids
# 调用K-Means函数进行聚类
clusters, centroids = k_means(data.values, 2)
# 输出聚类结果
print(clusters)
```
这个代码假设数据集文件名为 `breast_cancer_data.csv`,其中第一列为 id,第二列为诊断结果(B为良性,M为恶性),最后一列为无效列。代码将这三列删除,并将剩余列进行归一化处理。然后定义了一个 `k_means` 函数来实现K-Means算法。最后调用这个函数并输出聚类结果。
需要注意的是,这个代码只进行了二分聚类,即将所有数据点分为两类,而且质心的初始化是随机的,因此每次运行结果可能会有所不同。如果需要进行更多的聚类分类,可以修改 `k_means` 函数中的 `k` 参数。同时,还可以自行修改代码以满足自己的需求。
阅读全文