【发布时间】:2012-06-21 19:39:40
【问题描述】:
我正在使用 RTextTools 构建一个包含矩阵和模型的训练集,稍后我会将其应用于不同的文档以对它们进行分类。
编辑:该矩阵是一个文档术语矩阵
我遇到的问题是,当我使用以下行创建new_matrix 时,有时会使用某些文档
new_matrix <- create_matrix(data$document,language="english", removeNumbers=FALSE, removePunctuation=TRUE, removeStopwords=TRUE, toLower=TRUE, stemWords=TRUE, minDocFreq=1,weighting=weightTfIdf,originalMatrix=matrix)
我得到了一些 NaN 值,这些值使我的语料库失败
corpus <- create_corpus(new_matrix,data$value, testSize=1:100,virgin=FALSE)
出现错误
Error in .csr.coo(x) : NA/NaN/Inf in foreign function call (arg 4)
我不确定为什么会有一些 NaN 值。我的猜测是它与 new_matrix 上存在的一些单词有关,而不是原始矩阵上的一些单词。
如何在结果矩阵中将 NaN 值更改为 0?
这样做会改变分类结果吗?
非常感谢任何帮助!谢谢!
【问题讨论】:
-
感谢 Joshua,它适用于矩阵但不适用于文档术语矩阵
-
reproducible example 会有所帮助。如果做不到这一点,您可以只查看矩阵的内容 (
str(new_matrix)),注意它只是位置和值的列表,然后删除有问题的 (m <- new_matrix; i <- is.finite(m$v); m$i <- m$i[i]; m$j <- m$j[i]; m$v <- m$v[i])。 -
谢谢文森特!你给了我一个想法。在使用
str(new_matrix)之后,我注意到NaN的值都在new_matrix$v中,我运行DWAHL 提供的代码,现在我可以为0修改NaN的值。我还不清楚这是否会改变机器学习算法的结果,但这是一个很好的步骤。再次感谢!
标签: r machine-learning