乳腺癌数据集聚类分析代码
时间: 2023-09-16 21:11:27 浏览: 62
以下是使用K-means算法进行乳腺癌数据集聚类分析的示例代码:
```python
import pandas as pd
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt
# 加载乳腺癌数据集
data = pd.read_csv('breast_cancer.csv')
# 查看数据集信息
print(data.info())
# 删除无用列
data.drop(['id', 'diagnosis', 'Unnamed: 32'], axis=1, inplace=True)
# 数据标准化
data_std = (data - data.mean()) / data.std()
# 聚类分析
kmeans = KMeans(n_clusters=2, random_state=0).fit(data_std)
# 聚类结果可视化
plt.scatter(data_std.iloc[:, 0], data_std.iloc[:, 1], c=kmeans.labels_)
plt.xlabel('Radius Mean')
plt.ylabel('Texture Mean')
plt.show()
```
在上述代码中,我们首先加载了乳腺癌数据集,并且删除了无用的列。然后对数据进行了标准化处理,以确保所有特征具有相同的权重。接下来,我们使用K-means算法对数据进行聚类分析,并且通过散点图对聚类结果进行可视化展示。在本示例中,我们将数据集聚类为两个簇。
相关问题
乳腺癌数据集聚类分析代码,不使用sklearn
以下是一个简单的乳腺癌数据集的聚类分析代码,使用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` 参数。同时,还可以自行修改代码以满足自己的需求。
乳腺癌数据集聚类分析代码,不使用sklearn,聚类设置簇个数为2,对聚类结果进行可视化
以下是乳腺癌数据集的聚类分析代码,使用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。
- 可视化聚类结果,将属于不同簇的样本点用不同颜色表示,将中心点用星号标注。