poi聚类尝试

目前在搞一个基于GIS地图的POI聚类分析,所得数据特征并不丰富,而且多数特征无用,要在地图上做出花样来有点难啊,反复思索了很多种解法


POI数据含坐标

1.数据预处理 :

CLASS十六进制转十进制,DISTRICT 归一化/标准化

(后来在程序里用了数据标准化)


import pandas as pd

from sklearn.cluster import KMeans

#参数初始化

inputfile = 'C:/Users/mfm/Desktop/new123.xls' #销量及其他属性数据

outputfile = 'C:/Users/mfm/Desktop/new123pro.xls' #保存结果的文件名

k = 11 #聚类的类别

iteration = 500 #聚类最大循环次数

data = pd.read_excel(inputfile, index_col = 'FID') #读取数据

data_zs = 1.0*(data - data.mean())/data.std() #数据标准化

model = KMeans(n_clusters = k, n_jobs = 1, max_iter = iteration) #分为k类,并发数1

model.fit(data_zs) #开始聚类

print("开始聚类")

#简单打印结果

r1 = pd.Series(model.labels_).value_counts() #统计各个类别的数目

r2 = pd.DataFrame(model.cluster_centers_) #找出聚类中心

r = pd.concat([r2, r1], axis = 1) #横向连接(0是纵向),得到聚类中心对应的类别下的数目

r.columns = list(data.columns) + [u'类别数目'] #重命名表头

print(r)

#详细输出原始数据及其类别

r = pd.concat([data, pd.Series(model.labels_, index = data.index)], axis = 1)  #详细输出每个样本对应的类别

r.columns = list(data.columns) + [u'聚类类别'] #重命名表头

r.to_excel(outputfile) #保存结果


之后尝试以class 和 district作为聚类特征做了尝试,效果还是不理想,尚未进行可视化的结果展示。对整体的分类效果不满意


2.之后尝试以DBSCAN做尝试,试图分出一个连续区域的效果,类似位和科技的分区效果,如下图:

待续

你可能感兴趣的:(poi聚类尝试)