【问题标题】:How can I remove NaN values from a document term matrix如何从文档术语矩阵中删除 NaN 值
【发布时间】: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 &lt;- new_matrix; i &lt;- is.finite(m$v); m$i &lt;- m$i[i]; m$j &lt;- m$j[i]; m$v &lt;- m$v[i])。
  • 谢谢文森特!你给了我一个想法。在使用str(new_matrix) 之后,我注意到NaN 的值都在new_matrix$v 中,我运行DWAHL 提供的代码,现在我可以为0 修改NaN 的值。我还不清楚这是否会改变机器学习算法的结果,但这是一个很好的步骤。再次感谢!

标签: r machine-learning


【解决方案1】:

使用 is.na() 查找 NaN 值的简单方法:

data<-c(1,2,NaN,4,2)
data[is.na(data)]<-0
data

[1] 1 2 0 4 2

【讨论】:

  • 谢谢,我试过了,但它不适用于我的矩阵,运行后的输出是一样的。这是我的代码 [new_matrix[is.na(new_matrix)]
  • 更正,它似乎适用于矩阵但不适用于文档术语矩阵
【解决方案2】:

我是 RTextTools 的首席开发人员,如果您能向我发送此错误的示例,我将不胜感激。 originalMatrix 参数是在过去两个月内引入的,它的处理方式可能存在一些问题。您可以在我的网站 (http://www.timjurka.com/) 上给我发电子邮件

【讨论】:

    猜你喜欢
    • 2018-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-17
    • 2015-05-19
    • 2018-04-29
    • 1970-01-01
    相关资源
    最近更新 更多