### K-Means (AgglomerativeClustering 为层次聚类使用,相应两行被替换) 向量距离聚类
#coding=utf-8
import numpy as np
import matplotlib.pyplot as plt
#from sklearn.cluster import KMeans
from sklearn.cluster import AgglomerativeClustering
#读取城市经纬度数据
X = []
f = open('files\\city.csv')
for v in f:
X.append([float(v.split(',')[2]),float(v.split(',')[3])])
#转换成numpy array
X = np.array(X)
#类簇的数量 - kmeans算法的参数
n_clusters = 5
#进行聚类
cls = KMeans(n_clusters).fit(X)
#cls = AgglomerativeClustering(linkage='ward',n_clusters=n_clusters).fit(X)
#聚类结果列表
cls.labels_
#画图
markers = ['^','x','o','*','+']
for i in range(n_clusters):
members = cls.labels_ == i
plt.scatter(X[members,0],X[members,1], s=60, marker=markers[i],c='b',alpha=0.5)
#print(members)
#print(X[members,1])
plt.title('')
plt.show()
### DBScan算法 密度聚类
#coding = utf-8
import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import DBSCAN
X = [
[9670250,1392358258], #中国
[2980000,1247923065], #印度
[9629091,317408015], #美国
[8514877,201032714], #巴西
[377873,127270000], #日本
[7692024,23540517], #澳大利亚
[9984670,34591000], #加拿大
[17075400,143551289], #俄罗斯
[513115,67041000], #泰国
[181035,14805358], #柬埔寨
[99600,50400000], #韩国
[120538,24052231] #朝鲜
]
#转换成numpy array
X = np.array(X)
#做归一化
# 以下两行参考http://blog.csdn.net/csj664103736/article/details/72828584
a = X[:,:1] / 17075400.0 * 10000
b = X[:,1:] / 1392358258.0 * 10000
X = np.concatenate((a,b),axis=1)
# 以上concatenate的用法参考http://blog.csdn.net/zyl1042635242/article/details/43162031
#进行数据训练(两参数:扫描半径,最小包含点数)
cls = DBSCAN(eps=2000,min_samples=1).fit(X)
#类簇的数量
n_clusters = len(set(cls.labels_))
#X中每项所属分类的一个列表
cls.labels_
#画图
markers = ['^','x','o','*','+']
for i in range(n_clusters):
my_members = cls.labels_==i
plt.scatter(X[my_members,0],X[my_members,1],s=60,marker=markers[i],c='b',alpha=0.5)
plt.title('dbscan')
plt.show()
机器学习K-Means及DBSCAN聚类算法的python代码
原文作者:聚类算法
原文地址: https://blog.csdn.net/ebzxw/article/details/80304718
本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
原文地址: https://blog.csdn.net/ebzxw/article/details/80304718
本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。