程序说明

请将下载后的zip压缩包解压,会得到以下目录和文件:

image

【图1】程序文件目录

1.聚类文件demo(csv格式,eg:./data/demo.csv);
2.程序为控制台界面,通过批处理bat文件设置参数和执行;
3.可执行文件Clustering.exe;
4.执行方式:用记事本将run.bat打开,设置参数并保存。点击bat文件执行。

参数方式

image

【图2】 bat文件参数

Clustering.exe input_filename output_filename cluster_num max_iterations expectation_silhouette distance_type is_normalization use_rand_init max_DT_FT_gap_dist cluster_num_times AP_init_parts_num min_init_contribution

例(图2的第31行):Clustering.exe ./data/eerduosi_all_buildings_min.csv ./result/eerduosi_all_buildings_min_class_2.csv 2 10 1.0 -2 2 0 0.1 5 20 0.5 2031

参数说明

input_filename:输入的文件名,即需要聚类的数据。输入文件的格式为逗号分隔的CSV文件格式,如(csv格式,eg:demo.csv):

FID, 维度1标签, 维度2标签,.....

0, 1.23, 2.34,...

1, 3.11, 3.44,...

output_filename:输出的文件名。

如果距离类型distance_type设置为正数标签,只会生成聚类结果文件。

如果距离类型distance_type设置为负数标签,则另外会生成辅助数据文件,包括:

  1. 第一个为计算中生成的dat文件,用于存储每两个数据之间的距离(只是为了迭代加速,如果同一个数据更换了距离,请手动删除此文件);
  2. 输出的其余5个的文件会在该名称后面加后缀名区分,后缀包括:

image

【图3】程序结果文件

*_iter_silhouette:每次迭代的silhouette值;

*_means:初始的聚类中心的贡献度等,每次迭代的silhouette值和聚类中心,和最佳的聚类次数和最佳的silhouette值;

*_silhouette:最终聚类结果的silhouette值和每个点的silhouette值

*_means_bestCenter.csv:最佳的聚类中心;

不加后缀的(和写的输出文件名相同):为最终的聚类结果数据(FID和类别)。

cluster_num:聚类类别数K。

max_iterations:最大迭代次数。

expectation_silhouette:聚类silhouette期待值,范围为0~1。一旦达到即停止迭代。

distance_type:聚类距离选择,每种值和对应的距离计算方法:

-3 COS Distance (必须用KMEDOIDS)

-2 Dynamic Time Wrapping Distance (必须用KMEDOIDS)

-1 Normal Euclidean Distance

0 Chebyshev distance (L-inf norm)

1 city block distance (L1 norm)

2 Euclidean distance (L2 norm)

10 Pearson correlation: dist(a,b) = 1-corr(a,b)

11 Absolute Pearson correlation: dist(a,b) = 1-'corr(a,b)'

12 Uncentered Pearson correlation (cosine of the angle): dist(a,b) = a'b/('a''b')

13 Absolute uncentered Pearson correlation: dist(a,b) = 'a'b'/('a''b')

20 Spearman rank correlation: dist(a,b) = 1-rankcorr(a,b)

21 Absolute Spearman rank correlation: dist(a,b) = 1-'rankcorr(a,b)'

is_normalization(0=No/1=Yes/2=Yes):是否选择将数据归一化处理后再聚类。如果设置为1则全局最大最小值归一化,2为单条数据归一化(忽略各条数据的大小差异,只关心数据特征),如果设置为0则采用原始数据聚类。

use_rand_init(0=No/1=Yes):是否随机选择初始聚类中心。不用随机选择的初始聚类中心的话,用的是上文提出的AP迭代法寻找初始聚类中心。

max_DT_FT_gap_dist:值为0~1, 聚类中心和最远的点的距离。如果大于这个距离则重新选择聚类中心,推荐值0如果大于这个距离则重新选择聚类中心,推荐值0.1。一旦达到即停止迭代。

cluster_num_times (>=1):初始聚类中心数目=cluster_num_times * cluster_num。该参数是为了可以从更多的初始聚类中心中寻找贡献度最优的初始聚类中心,最好乘积不要大于100,一般5就可以了,否则寻找初始中心的时间会很长。

AP_init_parts_num :寻找初始聚类中心时,将数据划分为的份数

当聚类数大于5时,最好不要大于聚类数目的3倍;

聚类数目大于10时,不要大于聚类数目的1.5倍,否则聚类速度很慢。

min_init_contribution:初始聚类中心的最小贡献度

从众多的初始聚类中心中,选择了等于聚类数目的初始中心后,如果这些初始中心的总贡献度小于这个值,则重新寻找初始聚类中心。

软件下载

Cluster v2.0软件下载地址(GitHub):

https://github.com/whuyao/hpscil_dtw_clustering

参考资料

https://urbancomp.net/archives/use-time-series-taxi-trajectory-to-identify-multi-level-urban-functional-structure

https://urbancomp.net/archives/delineatingurbanfunctionalareaswithsocialmediadatabasedadynamictimewarpingdistance

Q.E.D.