【问题标题】:Is there a way on ojAlgo to normalize a Matrix?ojAlgo 有没有办法标准化矩阵?
【发布时间】:2019-03-29 07:09:57
【问题描述】:

我很想知道是否有一种方法可以使用 ojAlgo 矩阵库找到 MatrixStore 的规范化形式。

也许曾经在 MatrixStore 上执行的例程或任务会导致每一行的平均值为 0,标准差为 1。

如果有人熟悉 sklearn,我正在寻找的是 ojAlgo 上的一些功能,其功能类似于 sklearn 上的预处理模块。

【问题讨论】:

    标签: normalization sklearn-pandas ojalgo


    【解决方案1】:

    不直接。您必须自己编写一些循环和计算。这是一种可能的方法:

    PrimitiveDenseStore matrix = ...;
    
    SampleSet sampleSet = SampleSet.make();
    for (int j = 0; j < matrix.countColumns(); j++) {
        sampleSet.swap(matrix.sliceColumn(j));
        for (int i = 0; i < matrix.countRows(); i++) {
            matrix.set(i, j, sampleSet.getStandardScore(i));
        }
    }
    

    我强烈建议使用 ojAlgo 以列组织数据。

    我实际上并没有测试该代码。像这样就地更新矩阵可能会出现问题。

    ...

    使用 v47.1.1(刚刚发布)现在可以这样做:

    matrix.modifyAny(DataPreprocessors.STANDARD_SCORE);
    

    【讨论】:

    • 我注意到一些接口带有允许附加回调的 looprow 或 loopcolumn 方法。在您看来,当速度是一个因素时,推荐的遍历矩阵的方法是什么?
    • 我怀疑在这样的情况下会有什么不同。如果您正在寻找最后一点性能,那么请使用低级,这通常意味着您自己编写代码/循环。重要的是您如何组织数据。在上面的示例中,当矩阵变大时, sliceRow() 会比 sliceColumn() 慢得多。
    • 感谢您的反馈!我非常感谢您为 ojAlgo 所做的工作。
    猜你喜欢
    • 2018-03-10
    • 1970-01-01
    • 2012-08-31
    • 1970-01-01
    • 2021-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-31
    相关资源
    最近更新 更多