official_classification.py : 使用了较多的sklearn中提供的聚类函数
self_classification.py : 使用了较多的手写聚类函数(手写高斯聚类由于计算高维矩阵n次方报错,就没有使用)
两者可以相互比较看手写函数效果如何。
model.py : 其中包含了kmeans,lvq,mixture-of-gaussian聚类函数,以及计算精度和NMI的手写函数,处理标签映射的匈牙利算法。
由于学习向量量化是依据ground truth的得到的一组原型向量,是有监督的学习,因此计算其精度没有意义,在函数里就没有计算精度和NMI,只打印出了原型向量
函数运行时会有warning,不用在意,手写的函数没有优化,速度较慢
代码对三个数据集,分别使用了kmeans,lvq,mixture-of-gaussian三个方法,在得到预测标签后,采用匈牙利算法对标签进行处理,计算其精确度acc和标准互信息nmi
这三种方法聚类的精度只有百分之五十几,在数据集yale中效果较差
运行方法:
安装相应需求的库,直接运行official_classifica
1