【问题标题】:How to call R functions from Free Pascal?如何从 Free Pascal 调用 R 函数?
【发布时间】:2011-11-16 04:04:05
【问题描述】:

在我的 Lazarus/Free Pascal 应用程序中,我生成了一个大型多列数值矩阵。我想在这张桌子上运行一个Principal Component Analysis (PCA),但似乎找不到任何可以这样做的包。

R 语言有一个导出PCA function 的.dll 库,但它返回一个“princomp”类的对象。我不确定我将如何从此类中提取相关信息(例如转换后的矩阵)以在 Lazarus/FPC 中使用。

【问题讨论】:

    标签: r freepascal pca


    【解决方案1】:

    看看 ALGLIB:

    http://en.wikipedia.org/wiki/ALGLIB

    http://www.alglib.net/download.php

    我认为它有许多数值例程,包括奇异值分解和特征值分解。因此,如果它没有特殊的 PCA 例程,请记住 PCA 均值向量是所有数据向量的均值,而 PCA 向量是协方差矩阵的特征向量,对应的特征值是数据投影的方差在这些向量上。

    【讨论】:

    • 太好了,感谢您提供的信息 - 这让我明白了很多。你能告诉我 - 一旦我有了 PCA 向量,我如何将相同的过程应用于单个查询点?每个向量是否有一个系数可用于将其转换为特征向量?
    • 假设你有 m 个 n 维数据向量 X_i,PCA 会给你一个 nx1 平均向量 A 和 n 个正交 PCA nx1 个向量 B_j。现在可以将数据向量 X_i 投影到具有索引 j 的主成分上,通过 w_j = (B_j)'*(X_i - A) (其中 ' 是转置)获得权重 w_j 关键是要找到一个紧凑的近似表示通过对最重要的主成分进行投影,以这种方式获得的少数权重形式的数据。我不确定这是否回答了这个问题。干杯。
    【解决方案2】:

    R 中实际上有两个 PCA 函数:princomp 和 prcomp。第一个计算数据协方差矩阵的特征值,第二个执行奇异值分解。每个函数返回的详细信息(“princomp”或“prcomp”类的对象)在“值”部分下的函数帮助页面中进行了描述。通常,这些是带有负载的矩阵(即旋转矩阵)、主成分的标准差(即协方差/相关矩阵的特征值的平方根),以及(如果需要)旋转数据集。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-23
      • 2011-12-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多