加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

机器学习K-Means及DBSCAN聚类算法的python代码

(2018-05-29 08:20:27)
标签:

python

机器学习

聚类

分类: 机器学习
  1. ### K-Means  (AgglomerativeClustering 为层次聚类使用,相应两行被替换)  向量距离聚类  
  2. #coding=utf-8  
  3. import numpy as np  
  4. import matplotlib.pyplot as plt  
  5. #from sklearn.cluster import KMeans  
  6. from sklearn.cluster import AgglomerativeClustering  
  7. #读取城市经纬度数据  
  8. []  
  9. open('files\\city.csv' 
  10. for in f:  
  11.     X.append([float(v.split(',')[2]),float(v.split(',')[3])])  
  12. #转换成numpy array  
  13. np.array(X)  
  14. #类簇的数量 kmeans算法的参数  
  15. n_clusters 5  
  16. #进行聚类  
  17. cls KMeans(n_clusters).fit(X)  
  18. #cls AgglomerativeClustering(linkage='ward',n_clusters=n_clusters).fit(X)  
  19. #聚类结果列表  
  20. cls.labels_  
  21. #画图  
  22. markers ['^','x','o','*','+' 
  23. for in range(n_clusters):  
  24.     members cls.labels_ ==  
  25.     plt.scatter(X[members,0],X[members,1], s=60marker=markers[i],c='b',alpha=0.5 
  26. #print(members)  
  27. #print(X[members,1])  
  28. plt.title('' 
  29. plt.show()  
  30.   
  31.   
  32. ### DBScan算法  密度聚类  
  33. #coding utf-8  
  34. import numpy as np  
  35. import matplotlib.pyplot as plt  
  36. from sklearn.cluster import DBSCAN  
  37.  
  38.     [9670250,1392358258],   #中国  
  39.     [2980000,1247923065],   #印度  
  40.     [9629091,317408015],    #美国  
  41.     [8514877,201032714],    #巴西  
  42.     [377873,127270000],     #日本  
  43.     [7692024,23540517],     #澳大利亚  
  44.     [9984670,34591000],     #加拿大  
  45.     [17075400,143551289],   #俄罗斯  
  46.     [513115,67041000],      #泰国  
  47.     [181035,14805358],      #柬埔寨  
  48.     [99600,50400000],       #韩国  
  49.     [120538,24052231      #朝鲜  
  50.  
  51. #转换成numpy array  
  52. np.array(X)  
  53. #做归一化  
  54.  以下两行参考http://blog.csdn.net/csj664103736/article/details/72828584  
  55. X[:,:117075400.0 10000  
  56. X[:,1:] 1392358258.0 10000  
  57. np.concatenate((a,b),axis=1 
  58.  以上concatenate的用法参考http://blog.csdn.net/zyl1042635242/article/details/43162031  
  59. #进行数据训练(两参数:扫描半径,最小包含点数)  
  60. cls DBSCAN(eps=2000,min_samples=1).fit(X)  
  61. #类簇的数量  
  62. n_clusters len(set(cls.labels_))  
  63. #X中每项所属分类的一个列表  
  64. cls.labels_  
  65. #画图  
  66. markers ['^','x','o','*','+' 
  67. for in range(n_clusters):  
  68.     my_members cls.labels_==i  
  69.     plt.scatter(X[my_members,0],X[my_members,1],s=60,marker=markers[i],c='b',alpha=0.5 
  70. plt.title('dbscan' 
  71. plt.show()  

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有