DBSCAN-csharp.rar - 程序说明:
Form1.cs是应用聚类算法DBSCAN (Density-Based Spatical Clustering of Application with Noise)的示例,可以通过两个参数EPS和MinPts调节聚类。
DBSCAN.cs是实现文件,聚类算法的进一步信息请参考“数据挖掘”或者相关书籍
聚类示例数据来自于sxdb.mdb,一个Access数据库。
已知问题及进一步改进建议:
问题:dbscan.cs行64,SortedList不支持重复键,因此若两个数据点距离相同则无法加入集合
解决:采用人为减小一个微小量,使数据点距离不同且不影响聚类结果
上一解决方案的问题:减小double.Epsilon微小量无助于使SortedList认为两点距离以及不同
解决:采用一个指数增长的微小量,连续重试直至SortedList认为距离已经不同
进一步改进建议:可能通过double的强制转型为内存中的byte类型(假设double型转为8个byte)
然后最后一个byte减去0x01可比较漂亮的解决问题,但是……呵呵,C#中我不会这个操作
也可以自己实现一个SortedList,支持重复键,当然,这,好像是微软应该做的工作了 ^_^
Eric Guo
<http://www.cnblogs.com/ericguo/>
,2006-07-21 15:42:44,下载257次