包括一些结构面聚类算法的简单实现,目前实现的有:
- k-Means
- DBSCAN
- Affinity Propagation
- Gaussion Mixture
- AGNES
代码只实现了算法,未做任何优化,数据量大时某些算法会非常慢
直接将所有python文件下载运行即可(需要numpy和matplotlib),其中test开头的python文件为简单的测试运行文件,文件中需手动修改算法参数。
算法支持的数据文件格式见两个txt文件,它们也可作为测试用例
将结构面产状(倾向,倾角)转换为单位超球体上的空间向量(x,y,z),即结构面的单位法向量
以夹角衡量两结构面法向量之间的距离,具体采用两向量间锐角夹角的平方正弦值
将产状向量集的均值问题转换为求解受约束条件下的函数极值问题:
- 约束条件:单位超球体,即结构面单位法向量空间
- 欲求解的函数:各向量与欲求解的均值向量的距离的和
即均值向量的定义为:与各向量的距离和最小的向量,即函数的最小值。运用拉格朗日乘子法,即可将该问题转换为简单的求解特定矩阵的特征向量。
具体的数学推导可见论文:fuzzy cluster algorithm for the automatic identification of joint sets (HAMMAH R, CURRAN J H)