Python Clustering Algorithms

时光毁灭记忆、已成空白 提交于 2019-12-03 05:42:18

I've found one that requires NO a priori information/guesses and does very well for what I'm asking it to do. It's called Mean Shift and is located in SciKit-Learn. It's also relatively quick (compared to other algorithms like Affinity Propagation).

Here's an example of what it gives:

I also want to point out that in the documentation is states that it may not scale well.

  • When using DBSCAN it can be helpful to scale/normalize data or distances beforehand, so that estimation of epsilon will be relative.

  • There is a implementation of DBSCAN - I think its the one Anony-Mousse somewhere denoted as 'floating around' - , which comes with a epsilon estimator function. It works, as long as its not fed with large datasets.

  • There are several incomplete versions of OPTICS at github. Maybe you can find one to adapt it for your purpose. Still trying to figure out myself, which effect minPts has, using one and the same extraction method.

You can try a minimum spanning tree (zahn algorithm) and then remove the longest edge similar to alpha shapes. I used it with a delaunay triangulation and a concave hull:http://www.phpdevpad.de/geofence. You can also try a hierarchical cluster for example clusterfck.

Your plot indicates that you chose the minPts parameter way too small.

Have a look at OPTICS, which does no longer need the epsilon parameter of DBSCAN.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!