【发布时间】: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 类型,因为我只允许浮点和双点精度。谢谢(你的)信息。帮我解决了。