Python无监督聚类算法:基于基因表达量对患者进行聚类
使用Python编写无监督聚类算法,根据基因的表达量对患者进行聚类
本示例演示如何使用Python和K-means算法对基因表达量数据进行无监督聚类。该算法将根据基因表达量的相似性将患者分成不同的组别。
步骤:
- 读取数据: 从Excel表格中读取基因表达量数据,其中第0行为基因名称,其余各行为基因表达量,每一行代表一个样本。数据文件路径为:'C:\Users\lenovo\Desktop\HIV\DNN神经网络测试\output_data1.xlsx'
- 聚类: 使用K-means算法对样本进行聚类,聚类数目自选。
- 可视化: 使用matplotlib库将聚类结果可视化,以便观察不同组别的分布。
- 输出结果: 将聚类结果输出到Excel表格,新增一列为所属聚类中心编号,文件路径为:'C:\Users\lenovo\Desktop\HIV\DNN神经网络测试\output_data2.xlsx'
代码:
import numpy as np
import pandas as pd
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt
# 读取数据
data = pd.read_excel('C:\Users\lenovo\Desktop\HIV\DNN神经网络测试\output_data1.xlsx', index_col=0)
# 获取数据行数和列数
n_samples, n_features = data.shape
# 聚类数目
n_clusters = 4
# 初始化K-means模型
kmeans = KMeans(n_clusters=n_clusters)
# 训练模型
kmeans.fit(data)
# 预测聚类结果
y_pred = kmeans.predict(data)
# 可视化聚类结果
plt.scatter(data.iloc[:, 0], data.iloc[:, 1], c=y_pred)
plt.title('Clustering Results')
plt.xlabel('Gene Expression Level')
plt.ylabel('Sample Index')
plt.show()
# 输出聚类结果到Excel表格
data['Cluster'] = y_pred
data.to_excel('C:\Users\lenovo\Desktop\HIV\DNN神经网络测试\output_data2.xlsx')
解释:
- 导入库: 首先导入所需的库,包括numpy、pandas、sklearn和matplotlib。
- 读取数据: 使用
pd.read_excel()函数读取Excel文件中的数据,其中index_col=0表示将第0列作为行索引。 - 获取数据维度: 使用
data.shape获取数据行数和列数,分别对应样本数和特征数。 - 设置聚类数目: 设置聚类数目
n_clusters,本例中设置为4。 - 初始化K-means模型: 使用
KMeans(n_clusters=n_clusters)初始化K-means模型。 - 训练模型: 使用
kmeans.fit(data)训练K-means模型。 - 预测聚类结果: 使用
kmeans.predict(data)预测每个样本所属的聚类中心。 - 可视化聚类结果: 使用
plt.scatter()函数绘制散点图,其中c=y_pred表示将聚类结果作为颜色参数,以区分不同组别。 - 输出聚类结果: 在数据中新增一列
Cluster存储每个样本所属的聚类中心编号,并使用data.to_excel()函数将结果输出到Excel文件中。
本示例演示了使用Python进行无监督聚类的基本流程。在实际应用中,可以根据具体的需求调整参数和算法,以获得最佳的聚类结果。
原文地址: https://www.cveoy.top/t/topic/nfx9 著作权归作者所有。请勿转载和采集!