手机网站建设文章,天津设计公司联系方式,品牌代理网,新开传奇网站发布网单机器学习#xff1a;学习KMeans算法#xff0c;了解模型创建、使用模型及模型评价 作者#xff1a;AOAIYI 作者简介#xff1a;Python领域新星作者、多项比赛获奖者#xff1a;AOAIYI首页 #x1f60a;#x1f60a;#x1f60a;如果觉得文章不错或能帮助到你学习#…机器学习学习KMeans算法了解模型创建、使用模型及模型评价 作者AOAIYI 作者简介Python领域新星作者、多项比赛获奖者AOAIYI首页 如果觉得文章不错或能帮助到你学习可以点赞收藏评论关注哦 如果有小伙伴需要数据集和学习交流文章下方有交流学习区一起学习进步 专栏案例机器学习机器学习基于逻辑回归对某银行客户违约预测分析机器学习学习k-近邻KNN模型建立、使用和评价机器学习基于支持向量机SVM进行人脸识别预测决策树算法分析天气、周末和促销活动对销量的影响机器学习线性回归分析女性身高与体重之间的关系机器学习基于主成分分析PCA对数据降维机器学习基于朴素贝叶斯对花瓣花萼的宽度和长度分类预测文章目录机器学习学习KMeans算法了解模型创建、使用模型及模型评价一、实验目的二、实验原理三、实验环境四、实验内容五、实验步骤1.数据读取2.数据理解3.数据规整化处理4.数据建模5.查看模型6.预测模型7.结果输出总结一、实验目的
学习sklearn模块中的KMeans算法
二、实验原理
K-means算法是将样本聚类成k个簇cluster具体算法描述如下:
1、 随机选取k个聚类质心点cluster centroids为 2、 重复下面过程直到收敛 {
对于每一个样例i计算其应该属于的类 对于每一个类j重新计算该类的质心 K是我们事先给定的聚类数c(i)代表样例i与k个类中距离最近的那个类c(i)的值是1到k中的一个。质心uj代表我们对属于同一个类的样本中心点的猜测拿星团模型来解释就是要将所有的星星聚成k个星团首先随机选取k个宇宙中的点或者k个星星作为k个星团的质心然后第一步对于每一个星星计算其到k个质心中每一个的距离然后选取距离最近的那个星团作为c(i)这样经过第一步每一个星星都有了所属的星团第二步对于每一个星团重新计算它的质心uj对里面所有的星星坐标求平均。重复迭代第一步和第二步直到质心不变或者变化很小。求点群中心的算法
一般来说求点群中心点的算法你可以使用各个点的X/Y坐标的平均值。不过我这里想告诉大家另三个求中心点的的公式
1Minkowski Distance公式——λ可以随意取值可以是负数也可以是正数或是无穷大。 2Euclidean Distance公式——也就是第一个公式λ2的情况 3CityBlock Distance公式——也就是第一个公式λ1的情况
三、实验环境
Python 3.9
Anaconda
Jupyter Notebook
四、实验内容
学习KMeans算法了解模型创建、使用模型及模型评价等操作
五、实验步骤
1.数据读取
1.查看数据内容
2.使用pandas的read_table方法读取protein.txt文件以\t分隔并传入protein
import pandas as pd
protein pd.read_table(D:\CSDN\data\kmeans\protein.txt, sep\t)
protein.head() 2.数据理解
1.查看protein的描述性统计
print(protein.describe())2.查看数据基本信息
protein.info()3.查看protein的列名
print(protein.columns)4.用.shape方法可以读取矩阵的形状
print(protein.shape) 3.数据规整化处理
1.导入sklearn模块中的preprocessing函数
from sklearn import preprocessing
#删除protein中的Country列,axis1表示横向执行
sprotein protein.drop([Country], axis1)
print(sprotein) 使用preprocessing函数中的.scale()方法进行标准化一般会把train和test集放在一起做标准化 或者在train集上做标准化后用同样的标准化器去标准化test集此时可以用scaler
sprotein_scaled preprocessing.scale(sprotein)
print(sprotein_scaled) 4.数据建模
1.导入sklearn模块中的KMeans方法
from sklearn.cluster import KMeans
#创建一个1~20的列表并赋值给NumberOfClusters
NumberOfClusters range(1, 20)
#n_clusters参数分成的簇数要生成的质心数
kmeans [KMeans(n_clustersi) for i in NumberOfClusters]
score [kmeans[i].fit(sprotein_scaled).score(sprotein_scaled) for i in range(len(kmeans))]
score 2.导入Matplotlib模块
import matplotlib.pyplot as plt
%matplotlib inline
plt.plot(NumberOfClusters,score)
plt.xlabel(Number of Clusters)
plt.ylabel(Score)
plt.title(Elbow Curve)
plt.show() 3.使用KMeans算法生成实例myKmeans
myKmeans KMeans(algorithmauto,n_clusters5,n_init10,max_iter200) 参数解释 algorithm有“auto”, “full” or “elkan”三种选择,默认的”auto”则会根据数据值是否是稀疏的来决定如何选择”full”和“elkan”一般数据是稠密的那么就是 “elkan”否则就是”full” n_clusters5即k值一般需要多试一些值以获得较好的聚类效果 n_init用不同的初始化质心运行算法的次数 max_iter 最大的迭代次数
4.利用.fit()方法对sprotein_scaled进行模型拟合
myKmeans.fit(sprotein_scaled) 5.查看模型
1.打印输出myKmeans模型
print(myKmeans)6.预测模型
1.使用.predict方法用训练好的模型进行预测
y_kmeans myKmeans.predict(sprotein)
print(y_kmeans) 7.结果输出
1.编写print_kmcluster函数并输出结果
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, FrVeg]]) print_kmcluster(5)总结
K-Means算法是一种典型的基于划分的聚类算法也是一种无监督学习算法。K-Means算法的思想很简单对给定的样本集用欧氏距离作为衡量数据对象间相似度的指标相似度与数据对象间的距离成反比相似度越大距离越小。
走在人生的跑道上不管遇到任何的困难我们都应该坚持下去永不退缩只有这样我们才能够成功。