聚类是机器学习中一个重要的分支。很多时候我们的数据没有标签,需要先用聚类的方式对数据进行细分,看看能否发现一些规律。在网络科学中,聚类方法经常用于社区发现中,也就是将网络中的节点根据其连接模式分到不同的类别中。
聚类中常用的方法有K-Means,DBSCAN,spectral biclustering等。这些方法,scikit-learn包里面都封装好了,可以直接调用。
但是,现实中有时候希望控制每类中样本的数量,也就对类尺寸大小有约束,而上面的这些聚类方法都没办法实现这一需求。最近,我发现关于这一问题(类尺寸有约束的聚类)已经有学者研究了,并且有相关开源代码,python实现非常方便。
相关资源分享如下:
size-constrained-clustering
这是一个带尺寸约束的聚类包,实现了很多算法, 并给出了很多参考文献(但是安装过程出了bug)。
k-means-constrained
这个包实现了带尺寸约束的K-means聚类算法,亲测安装可用,速度与原始K-means聚类算法相差不大。