微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将矩阵与向量相乘得到矩阵

如何解决将矩阵与向量相乘得到矩阵

我有一个文档-术语矩阵:

document_term_matrix <- as.matrix(DocumentTermMatrix(corpus,control = list(stemming = FALSE,stopwords=FALSE,minWordLength=3,removeNumbers=TRUE,removePunctuation=TRUE )))

对于这个文档-术语矩阵,我计算了局部术语和全局术语的权重,如下所示:

lw_tf <- lw_tf(document_term_matrix)
gw_idf <- gw_idf(document_term_matrix)

lw_tf一个与文档项矩阵 (nxm) 维数相同的矩阵,gw_idf一个向量n 的大小。但是,当我运行时:

tf_idf <- lw_tf * gw_idf

tf_idf 的维数又是 nxm

最初,我不希望这种乘法起作用,因为维度不一致。但是,鉴于此输出,我现在预计 gw_idf 的维数为 mxm。真的是这样吗?如果是这样:大小为 gw_idfn 向量发生了什么变化?

解决方法

矩阵乘法在 R 中使用 %*% 完成,而不是 *(后者只是逐元素乘法)。您的推理部分正确,您只是使用了错误的符号。

关于矩阵乘法,只有在第一个矩阵的第二维与第二个矩阵的第一维相同时才可能进行矩阵乘法。结果维度是第一个矩阵的 dim1 乘以第二个矩阵的 dim2。

在您的情况下,您告诉我们您有一个 1 x n 矩阵乘以一个 n x m 矩阵,这应该会产生一个 1 x m 矩阵。你可以在这个例子中检查这种情况:

a <- matrix(runif(100,1),nrow = 1,ncol = 100)
b <- matrix(runif(100 * 200,nrow = 100,ncol = 200)

c <- a %*% b
dim(c)
[1] 1 200

现在,关于你的具体情况,我真的没有这个制作术语文档的包(如果你能提供一个容易重现的例子会很好!),但是如果你乘以一个 nxm矩阵元素(您正在使用 *,就像我在开头所说的那样)通过 nx1 数组,结果没有意义。要么您的变量 gw_idf 根本不是数组(可能只是一个标量),要么您只是得出了错误的结论。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。