簡體   English   中英

朴素貝葉斯分類錯誤“數學函數的非數字參數”

[英]naive Bayes classification error 'non-numeric argument to mathematical function'

更新

我在使用朴素貝葉斯設置文本分類時遇到問題。 首先,我有3個文本文件,兩個帶有好/壞詞的模板,一個測試文件。 根據之前的評級模板,創建了我的TermDocumentMatrix,並且我還有一個評級向量:

TDM   word1   word2   word3   word4 ...  rating
doc1    1       1       1                 good
doc2            1        1      1          bad
doc3 ...

該向量未添加到TDM,因為我認為cbind會將值轉換為character 因此,我將矩陣分為兩部分:

template_train <- complete_TDM[1:(x+y),]
text_test <- data.matrix(complete_TDM[((x+y+1):nrow(complete_TDM)),])

其中x是良好評級模板的行數, y是不良評級模板的行數。

random <- sample(x+y)
template_train <- data.matrix(template_train[random,])   ###shuffle 
rating_vector <- as.factor(rating[random]) ###vector containing rating, shuffled the same way

然后創建一個naiveBayes模型:

naive_model <- naiveBayes(rating_vector~., x = template_train, y=rating_vector)

想預測

prediction <- predict(naive_model, text_test)

但是在最后一步,我收到一個錯誤:

> prediction <- predict(naive_model, text_test)
Error in log(sapply(seq_along(attribs), function(v) { : 
  non-numeric argument to mathematical function

提前致謝!

更新

好的,我剛剛解決了這個問題,我現在使用data.matrix代替我的評級向量的as.matrixas.factor ,但是現在我as.factor了問題,一切都被評為不好,反之亦然。

> table(prediction, rating_vector)
          rating_vector
prediction bad good
      bad    0   95
      good  94    0

你可以用

text_test = data.frame(text_test)
prediction <- predict(naive_model, text_test)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM