libpca是用於主成分分析的C++庫,它建立在線性代數庫Armadillo的基礎上。使用libpca進行主成分分析
雖然我遇到了問題。我將其輸出與Lindsay Smith給出的例子進行比較,在他PCA的精彩教程中。當我檢索第一個主要組件時,我在他的教程中獲得了與Smith相同的值,但其符號相反。對於第二個主要組成部分,符號和數值是正確的。
任何人都知道這是爲什麼?
代碼:
#include "pca.h"
#include <iostream>
using namespace std;
int main(int argc, char** argv) {
stats::pca pca(2);
double* elements = new double[20]{2.5, 2.4, 0.5, 0.7, 2.2, 2.9, 1.9, 2.2, 3.1, 3.0, 2.3, 2.7, 2, 1.6, 1, 1.1, 1.5, 1.6, 1.1, 0.9};
for (int i = 0; i < 20; i++) {
vector<double> record;
record.push_back(elements[i++]);
record.push_back(elements[i]);
pca.add_record(record);
}
pca.solve();
const vector<double> principal_1 = pca.get_principal(0);
for (int i = 0; i < principal_1.size(); i++)
cout << principal_1[i] << " ";
cout << endl;
const vector<double> principal_2 = pca.get_principal(1);
for (int i = 0; i < principal_2.size(); i++)
cout << principal_2[i] << " ";
cout << endl;
delete elements;
return 0;
}
輸出:
0.82797 -1.77758 0.992197 0.27421 1.6758 0.912949 -0.0991094 -1.14457 -0.438046 -1.22382
-0.175115 0.142857 0.384375 0.130417 -0.209498 0.175282 -0.349825 0.0464173 0.0177646 -0.162675
在大多數情況下只有主要組件的大小問題 – mtall 2014-09-05 04:46:32
有沒有任何提示如何使用libpca? – Ben 2018-02-27 15:47:51
@Ben不是我的問題給出了一個完整的工作示例? – kunterbunt 2018-02-27 19:34:43