当我们有一个负值的数据集时,我们可以应用非负矩阵分解吗?如果是,如何?
问问题
1397 次
2 回答
2
如果您使用的是 R:
nneg.data.matrix <- nneg(data.matrix)
nneg.data.matrix < 0
额外的参数“方法”选择是:
pmax - 每个条目都被限制在阈值阈值以上。
posneg - 矩阵分为“正”和“负”部分,每个部分的条目都被限制在阈值阈值以上。结果包括将这两个部分堆叠成行(即 rbind-ed)成单个矩阵,该矩阵具有输入矩阵对象的行数的两倍。
absolute - 每个条目的绝对值被限制为高于阈值阈值。
min - 通过将最小条目添加到每个条目的全局移位,仅当它为负时,然后应用阈值。
于 2016-11-01T16:43:04.393 回答
1
您可以将数据框的最小值添加到整个单元格以使其非负
set.seed(1)
x <- rmatrix(5,5, rnorm, mean=0, sd=5)
x
[,1] [,2] [,3] [,4] [,5]
[1,] -3.1322691 -4.102342 7.558906 -0.22466805 4.5948869
[2,] 0.9182166 2.437145 1.949216 -0.08095132 3.9106815
[3,] -4.1781431 3.691624 -3.106203 4.71918105 0.3728249
[4,] 7.9764040 2.878907 -11.073499 4.10610598 -9.9467585
[5,] 1.6475389 -1.526942 5.624655 2.96950661 3.0991287
nneg(x, method='min')
[,1] [,2] [,3] [,4] [,5]
[1,] 7.941230 6.971158 18.632405 10.84883 15.668386
[2,] 11.991716 13.510645 13.022716 10.99255 14.984181
[3,] 6.895356 14.765123 7.967297 15.79268 11.446324
[4,] 19.049903 13.952406 0.000000 15.17961 1.126741
[5,] 12.721038 9.546558 16.698154 14.04301 14.172628
于 2020-09-25T06:50:55.290 回答