R - svd() 函数 - 'x' 中的无限值或缺失值

标签 r infinite svd

我不断收到此错误。我确信矩阵没有任何非数字条目。我也试过估算矩阵,没有用。

有谁知道错误可能是什么?

fileUrl <- "https://dl.dropboxusercontent.com/u/76668273/kdd.csv";
download.file(fileUrl,destfile="./kdd.csv",method="curl");
kddtrain <- read.csv("kdd.csv");
kddnumeric <- kddtrain[,sapply(kddtrain,is.numeric)];
kddmatrix <- as.matrix(kddnumeric);
svd1 <- svd(scale(kddmatrix));

最佳答案

您有由全零组成的列。使用 scale在全为零的列上返回由 NaN 组成的列.要解决此问题,请删除全为零的列(svd 不会显示有关它们的任何新信息),或替换 NaN使用后为零的列 scale .

可重现的例子:

mat <- matrix(c(1,2,3,0,0,0,2,4,6,5,12,13),nrow = 3)
     # [,1] [,2] [,3] [,4]
# [1,]    1    0    2    5
# [2,]    2    0    4   12
# [3,]    3    0    6   13
scale(mat)
     # [,1] [,2] [,3]       [,4]
# [1,]   -1  NaN   -1 -1.1470787
# [2,]    0  NaN    0  0.4588315
# [3,]    1  NaN    1  0.6882472
# attr(,"scaled:center")
# [1]  2  0  4 10
# attr(,"scaled:scale")
# [1] 1.000000 0.000000 2.000000 4.358899
svd(mat) #fine
svd(scale(mat)) # not fine

关于R - svd() 函数 - 'x' 中的无限值或缺失值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21423375/

相关文章:

python - 使用 scikit-learn 的线性判别分析类时 lapack 函数的 SVD 计算错误

r - 列表中的模型无法预测

r - 强制大向量的错误?

javascript - 约翰·穆勒无限滚动

list - 将括号字符串解析为 Haskell 中的嵌套列表

machine-learning - LSA - 特征选择

r - 具有基本计算功能的群组功能

r - 查找重复行的索引

javascript - 在没有堆栈溢出的情况下在javascript中做无限动画的模式

MATLAB eig 有时会返回倒号