欢迎来到天天文库
浏览记录
ID:55915798
大小:605.50 KB
页数:8页
时间:2020-06-14
《机器学习聚类算法实现.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、《人工智能与机器学习》实验报告年级__xxxx班____________专业___________xxxxx_________学号____________6315070301XX________________________gllh________________日期___________2018-5-12__实验五聚类算法实现一、实验目的1、了解常用聚类算法及其优缺点2、掌握k-means聚类算法对数据进行聚类分析的基本原理和划分方法3、利用k-means聚类算法对已知数据集进行聚类分析实验类型:验证性计划课间:4学时二、实验容1、利用python的sklearn库函数对给定的数
2、据集进行聚类分析2、分析k-means算法的实现流程3、根据算法描述编程实现,调试运行4、对所给数据集进行验证,得到分析结果三、实验步骤1、k-means算法原理2、k-means算法流程3、k-means算法实现4、对已知数据集进行分析四、实验结果分析1.利用python的sklearn库函数对给定的数据集进行聚类分析:其中数据集选取iris鸢尾花数据集importnumpyasnpfromsklearn.datasetsimportload_irisiris=load_iris()defdist(x,y):returnsum(x*y)/(sum(x**2)*sum(y**2))*
3、*0.5defK_means(data=iris.data,k=3,ping=0,maxiter=100):n,m=data.shapecenters=data[:k,:]whileping4、np.mean(data[index,:],axis=0)ifnp.all(centers==centers_new):breakcenters=centers_newping+=1returndisif__name__=='__main__':res=K_means()print(res)(1)、首先求出样本之间的余弦相似度:sum(x*y)/(sum(x**2)*sum(y**2))**0.5(2)、设置k类别数为3,最大迭代次数为100K_means(data=iris.data,k=3,ping=0,maxiter=100):(3)、设置样本个数、属性个数并初始化类中心n,m5、=data.shapecenters=data[:k,:](4)、求各样本至各类中心的距离foriinrange(n):forjinrange(k):dis[i,j]=dist(data[i,:],centers[j,:])dis[i,k]=dis[i,:k].argmax()(5)、求新类中心:各类样本均值作为新类中心foriinrange(k):index=dis[:,k]==icenters_new[i,:]=np.mean(data[index,:],axis=0)实验结果:2.使用自己的数据集进行聚类分析并进行可视化:#-*-coding:utf-8-*-importnum6、pyasnpimportpandasaspdfromsklearn.clusterimportBirchfromsklearn.clusterimportKMeansfrommatplotlibimportpyplotaspltfrommatplotlib.font_managerimportFontPropertiesdf=pd.read_csv("fa.csv",encoding="utf-8")X=df[['height','weight']].valuesclf=KMeans(n_clusters=2)y_pred=clf.fit_predict(X)print(clf)pr7、int(y_pred)x=[n[0]forninX]print(x)y=[n[1]forninX]print(y)plt.scatter(x,y,c=y_pred,marker='o')plt.title("K-meansBoy/Girl-height-weightData")plt.xlabel("Height/cm")plt.ylabel("Weight/kg")plt.legend(["Position"])plt.show()本数据集使用男性女性身
4、np.mean(data[index,:],axis=0)ifnp.all(centers==centers_new):breakcenters=centers_newping+=1returndisif__name__=='__main__':res=K_means()print(res)(1)、首先求出样本之间的余弦相似度:sum(x*y)/(sum(x**2)*sum(y**2))**0.5(2)、设置k类别数为3,最大迭代次数为100K_means(data=iris.data,k=3,ping=0,maxiter=100):(3)、设置样本个数、属性个数并初始化类中心n,m
5、=data.shapecenters=data[:k,:](4)、求各样本至各类中心的距离foriinrange(n):forjinrange(k):dis[i,j]=dist(data[i,:],centers[j,:])dis[i,k]=dis[i,:k].argmax()(5)、求新类中心:各类样本均值作为新类中心foriinrange(k):index=dis[:,k]==icenters_new[i,:]=np.mean(data[index,:],axis=0)实验结果:2.使用自己的数据集进行聚类分析并进行可视化:#-*-coding:utf-8-*-importnum
6、pyasnpimportpandasaspdfromsklearn.clusterimportBirchfromsklearn.clusterimportKMeansfrommatplotlibimportpyplotaspltfrommatplotlib.font_managerimportFontPropertiesdf=pd.read_csv("fa.csv",encoding="utf-8")X=df[['height','weight']].valuesclf=KMeans(n_clusters=2)y_pred=clf.fit_predict(X)print(clf)pr
7、int(y_pred)x=[n[0]forninX]print(x)y=[n[1]forninX]print(y)plt.scatter(x,y,c=y_pred,marker='o')plt.title("K-meansBoy/Girl-height-weightData")plt.xlabel("Height/cm")plt.ylabel("Weight/kg")plt.legend(["Position"])plt.show()本数据集使用男性女性身
此文档下载收益归作者所有