最近看了一些经典的降维算法,发现网上的资料大部分都不提供源代码,同时个人觉得通过代码理解算法是最有效的一种方式,因此决定自己整理和实现一些常见降维算法的代码。(github上不止止有代码,还有相应的资料,同时后续也会继续整理其他代码)
1. PCA
当特征数(D)远大于样本数(N)时,需要使用一点小技巧使得PCA算法的复杂度由
转换为
。
2. KPCA
3. MDS
由于sklearn中MDS是采用迭代优化方式,而我这里实现了迭代和非迭代的两种。
4. Isomap
5. LLE
6. T-SNE
参考了源代码,同时也用tensorflow实现了一个。(不用自己更新参数的感觉是真的爽)
7. LDA
8. AutoEncoder
使用AutoEncoder实现的PCA
9. FastICA
10. SVD
11. LE
github链接如下:
heucoder/dimensionality_reduction_alo_codesgithub.com如果对降维算法感兴趣的同学就点个赞,收个藏~。如果有同学实现了别的降维算法,也希望可以把资料和代码push给我~。
其他文章也很有意思:
超爱学习:你知道PCA的四种写法么zhuanlan.zhihu.com