【问题标题】:How to use var/variance function in armadillo如何在犰狳中使用 var/variance 函数
【发布时间】:2016-12-30 11:46:13
【问题描述】:

我应该如何在犰狳中使用 var() 函数?

我有一个矩阵,其中行是变量/特征,列是观察值/实例。

我得到每行的方差,这样我就可以确定具有最大方差的变量/特征。

目前我正在打电话:

auto variances = arma::var(data, 0, 1);

data 是我的矩阵。

据我所知,目前我得到了一个矩阵?并且文档表明这是正确的。我期待为我的每个矩阵行返回一个带有方差分数的向量。

我可以遍历我的行并单独获取每行的方差,如下所示:

for (auto i = 0; i < data.n_rows; ++i)
    auto rowVariance = arma::var(dataSet.data.row(i));

但我不想这样做。

我想取回一个向量,其中包含矩阵中每一行的方差值,然后在该向量上使用 arma::sort_index() 来获取与排序方差相对应的一组排序索引。

提前致谢。

【问题讨论】:

  • 只写arma::vec variances = arma::var(data, 0, 1);。作者不建议使用auto,因为犰狳是一个高度模板化的类。
  • 无论如何,你仍然可以声明mat variances = var(data, 0, 1);并使用uvec indices = sort_index(variances);。在这种情况下,variances 将是一个 1xN 矩阵,indices 将始终是一个列向量。
  • 嘿@vagoberto,非常感谢。原来错误是因为我使用的是 arma::var variances = arma::var(data, 0, 1) 并且应该一直使用 arma::Col variances = arma::var(data, 0, 1 ) 由于我的数据矩阵是 Mat 类型,因为我只允许浮点和双点精度。谢谢(你的)信息。帮我解决了。

标签: c++ armadillo


【解决方案1】:

原来错误是因为我使用的是arma::var variances = arma::var(data, 0, 1),并且应该使用arma::Col&lt;T&gt; variances = arma::var(data, 0, 1),因为我的数据矩阵类型为arma::Mat&lt;T&gt;,因为我只允许浮点和双点精度。

vagoberto 的上述评论让我走上了正轨。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多