K-Means 聚类分析:基于基因表达量对 HIV 数据进行分类
使用 K-Means 聚类分析 HIV 数据集
该代码使用 K-Means 聚类算法对 HIV 数据集进行分类,并绘制聚类热图进行可视化展示,分析不同基因表达量水平的样本分类情况。
import pandas as pd
import numpy as np
from sklearn.cluster import KMeans
# 读入 Excel 表格
data = pd.read_excel('C:\Users\lenovo\Desktop\HIV\DNN神经网络测试\HIV数据 - 副本.xlsx', index_col=0)
# 提取基因表达量
X = data.iloc[:, 1:].values
# K-means 算法,K=3
kmeans = KMeans(n_clusters=3, random_state=0).fit(X)
# 获取聚类结果
labels = kmeans.labels_
# 输出聚类结果到 Excel 表格
result = pd.DataFrame({'name': data.index, 'label': labels})
result.to_excel('C:\Users\lenovo\Desktop\HIV\DNN神经网络测试\HIV聚类结果.xlsx', index=False)
# 绘制散点图
plt.scatter(X[:, 0], X[:, 1], c=labels)
plt.xlabel('基因表达量 1')
plt.ylabel('基因表达量 2')
plt.title('K-Means 聚类结果')
plt.show()
# 绘制箱线图
plt.figure(figsize=(10, 6))
sns.boxplot(x='label', y='基因表达量 1', data=result)
plt.title('基因表达量 1 不同类别分布')
plt.show()
# 绘制小提琴图
plt.figure(figsize=(10, 6))
sns.violinplot(x='label', y='基因表达量 1', data=result)
plt.title('基因表达量 1 不同类别分布')
plt.show()
# 绘制热图
import seaborn as sns
import matplotlib.pyplot as plt
# 绘制聚类热图
sns.clustermap(X, cmap='coolwarm', method='ward', col_cluster=False, figsize=(10, 10))
plt.show()
# 保存聚类热图
plt.savefig('C:\Users\lenovo\Desktop\HIV\DNN神经网络测试\HIV聚类热图.png')
可视化展示
除了聚类热图,上述代码还可以绘制以下图表进行可视化展示:
- 散点图: 展示样本在二维空间中的分布情况,并根据聚类结果进行颜色区分。
- 箱线图: 展示不同类别样本的基因表达量分布情况,可以观察各类别样本在特定基因表达量上的差异。
- 小提琴图: 展示不同类别样本的基因表达量分布情况,更详细地展示数据分布情况。
代码说明
-
导入必要的库:
pandas用于数据处理和读取 Excel 文件。numpy用于数值计算。sklearn.cluster用于实现 K-Means 聚类算法。seaborn用于绘制聚类热图。matplotlib.pyplot用于绘制散点图、箱线图和小提琴图。
-
读取数据: 使用
pd.read_excel函数读取 Excel 表格数据。 -
提取基因表达量: 使用
data.iloc[:, 1:].values提取所有样本的基因表达量数据,并将其存储在X变量中。 -
进行 K-Means 聚类: 使用
KMeans类创建聚类模型,并使用fit方法训练模型。 -
获取聚类结果: 使用
kmeans.labels_获取每个样本所属的类别标签。 -
输出聚类结果: 使用
pd.DataFrame创建一个新的 DataFrame,存储样本名称和类别标签,并将结果保存到 Excel 文件中。 -
绘制聚类热图: 使用
sns.clustermap函数绘制聚类热图,并使用plt.savefig函数保存热图到本地。
总结
本代码通过 K-Means 聚类算法对 HIV 数据集进行分类,并通过可视化图表展示聚类结果。这种分析方法可以帮助我们了解不同基因表达量水平的样本分类情况,为进一步研究 HIV 的发病机制和治疗方法提供参考。
原文地址: https://www.cveoy.top/t/topic/nfF3 著作权归作者所有。请勿转载和采集!