import pandas as pd #读入数据 protein = pd.read_table('test.txt',sep='\t') #查看前五排 print(protein.head()) #查看描述性统计分析 print(protein.describe()) #查看列名 print(protein.columns) #查看行数和列数 print(protein.shape) #数据规整化处理 from sklearn import preprocessing #由于country不是特征值,故应删去 sprotein = protein.drop(['Country'],axis=1) #对数据进行标准化处理 sprotein_scaled = preprocessing.scale(sprotein) #查看处理结果 print(sprotein_scaled) #数据建模 #导入KMeans类型 from sklearn.cluster import KMeans #[注意]K值的选择方式 NumberOfClusters = range(1,20) kmeans = [KMeans(n_clusters=i) for i in NumberOfClusters] score = [kmeans[i].fit(sprotein_scaled).score(sprotein_scaled) for i in range(len(kmeans))] print(score) #变化跨度变小时的值就可取,K值 import matplotlib.pyplot as plt plt.plot(NumberOfClusters,score) plt.xlabel('Number of Clusters') plt.ylabel('Score') plt.title('Elbow Curve') plt.show() #图形变缓慢的点就可取,K值 #设置KMeans聚类器的超级参数 myKmeans = KMeans(algorithm='auto',n_clusters=5,n_init=10,max_iter=200) #n_cluster为聚类中心 #n_init和max_iter:初始值的选择次数以及最大迭代次数 #algorithem="auto",对于稀疏数据用full(EM算法),非稀疏数据用elkan算法 #【注意】初始聚类中心的选择方式是init参数,目前init参数取值可以为: #1、k-means++算法(默认):选择彼此尽可远的那个k点 #2、随机:random #3、指定:ndarray #模型训练 myKmeans.fit(sprotein_scaled) print(myKmeans.fit(sprotein_scaled)) #查看模型 print(myKmeans) #预测聚类结果 y_kmeans = myKmeans.predict(sprotein) print(y_kmeans) #结果输出 def print_kmcluster(k): ''' 用于聚类结果的输出 k:为聚类中心个数 ''' for i in range(k): print('聚类',i) ls = [] for index,value in enumerate(y_kmeans): if i == value: ls.append(index) print(protein.loc[ls,['Country','RedMeat','Fish','Fr&Veg']]) print_kmcluster(5)
基于python的机器学习
最新推荐文章于 2024-10-03 14:32:16 发布
本文介绍了如何通过pandas处理测试数据,对蛋白质数据进行预处理、标准化,然后运用KMeans算法进行聚类分析。重点在于探讨如何确定最优的聚类中心数量(K值),通过Elbow曲线和模型评估来优化。最后展示了K-means聚类的结果和应用实例。
摘要由CSDN通过智能技术生成