最近跑深度學習,提出的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) ;
接下來,就是漫長的等待了,數據實在太大了。。。筆記本在咆哮。。。。。