最近跑深度学习,提出的feature是4096维的,放到我们的程序里,跑得很慢,很慢。。。。
于是,一怒之下,就给他降维处理了,但是matlab 自带的什么pca( ), princomp( )函数,搞不清楚怎么用的,表示不大明白,下了一个软件包:
名字:Matlab Toolbox for Dimensionality Reduction
链接:http://lvdmaaten.github.io/drtoolbox/
Currently, the Matlab Toolbox for Dimensionality Reduction contains the following techniques:
- Principal Component Analysis (PCA)
- Probabilistic PCA
- Factor Analysis (FA)
- Classical multidimensional scaling (MDS)
- Sammon mapping
- Linear Discriminant Analysis (LDA) 等34种降维方法。。。。
废话少说,上干货。。。。
先下载该软件包,解压到自己的matlab文件中,然后添加该软件包的路径:
addpath(genpath(‘你的路径/drtoolbox’));
然后就是上自己的数据了,我的数据为: test_feature,想把它降维到 1000维,执行:
test_feature为要降维处理的数据, pca 为我选择的降维方法, 1000 是我想要的最终数据维数,生成的mapped_data即为降维处理后的数据。
[mapped_data, mapping] = compute_mapping(test_feature, \'PCA\', 1000 );
1 net_feature_path = [path, \'net feature/\'];
2
3 %%
4 test_feature = importdata([net_feature_path, \'HAT_test_features.txt\']);
5 [mapped_data, mapping] = compute_mapping(test_feature, \'PCA\', 1000 );
6
7 for i = 1:size(mapped_data, 1)
8 line = mapped_data(i, :);
9 file = fopen([net_feature_path, \'PCA_HAT_test_features.txt\'], \'a\');
10 fprintf(file, \'%s \', mapped_data);
11 fprintf(file, \'\n\' );
12 fclose(file);
13 end
14
15 % [coef, score, latent, t2] = princomp(test_fea);
16 % COEFF = pca(test_fea) ;
接下来,就是漫长的等待了,数据实在太大了。。。笔记本在咆哮。。。。。