基于python的机器学习

本文介绍了如何通过pandas处理测试数据,对蛋白质数据进行预处理、标准化,然后运用KMeans算法进行聚类分析。重点在于探讨如何确定最优的聚类中心数量(K值),通过Elbow曲线和模型评估来优化。最后展示了K-means聚类的结果和应用实例。
摘要由CSDN通过智能技术生成

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)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值