机器学习K-Means及DBSCAN聚类算法的python代码
(2018-05-29 08:20:27)
标签:
python
机器学习
聚类
|
分类:
机器学习
|
-
### 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()
喜欢
0
赠金笔
加载中,请稍候......