在我的Lazarus/Free Pascal應用程序中,我生成一個大的多列數值矩陣。我想在此表上運行Principal Component Analysis(PCA),但似乎無法找到任何軟件包來執行此操作。如何從Free Pascal調用R函數?
R語言有導出PCA function一個.dll庫,但它返回的類的對象「princomp。」我不知道該怎麼去提取這個類的相關信息(如轉換後的矩陣)以便在Lazarus/FPC中使用。
在我的Lazarus/Free Pascal應用程序中,我生成一個大的多列數值矩陣。我想在此表上運行Principal Component Analysis(PCA),但似乎無法找到任何軟件包來執行此操作。如何從Free Pascal調用R函數?
R語言有導出PCA function一個.dll庫,但它返回的類的對象「princomp。」我不知道該怎麼去提取這個類的相關信息(如轉換後的矩陣)以便在Lazarus/FPC中使用。
看看ALGLIB:
http://en.wikipedia.org/wiki/ALGLIB
http://www.alglib.net/download.php
我覺得它有很多的數字程序,以及其他奇異值分解和特徵值分解。因此,如果它沒有特殊的PCA例程,請記住PCA平均向量是所有數據向量的均值,並且PCA向量是協方差矩陣的特徵向量,相應的特徵值是數據投影的方差在那些載體上。
實際上R中有兩個PCA函數:princomp和prcomp。第一個計算數據的協方差矩陣的特徵值,第二個執行奇異值分解。有關每個函數返回的內容(類「princomp」或「prcomp」的對象)的詳細信息,請參見「值」一節下功能的幫助頁面。典型地,這些是具有加載(即旋轉矩陣)的矩陣,主要分量的標準偏差(即,協方差/相關矩陣的特徵值的平方根)以及如果請求的話,旋轉的數據集。
太好了,謝謝你提供的信息 - 這對我來說很重要。你能告訴我 - 一旦我有了PCA向量,我該如何將相同的過程應用於單個查詢點?是否有可以使用每個向量的係數將其轉換爲特徵向量? –
假設你有m維的數據向量X_i,PCA會給你一個nx1的平均向量A和n個正交的PCA nx1向量B_j。現在可以將數據向量X_i投影到具有索引j的主分量上以通過w_j =(B_j)'*(X_i_A)(其中'是轉置)來獲得權重w_j該點是尋找緊湊近似表示通過對最重要的主要成分進行投影以這種方式獲得幾個權重形式的數據。我不確定這是否回答了這個問題。乾杯。 – Rulle