参数的无效“类型”(字符)

Posted

技术标签:

【中文标题】参数的无效“类型”(字符)【英文标题】:invalid 'type' (character) of argument 【发布时间】:2016-08-07 00:51:46 【问题描述】:

这是关于该主题的错误消息。当我尝试运行 naive.bayes 分类器时出现此错误。这是我的火车数据的摘要:

'data.frame':   7269 obs. of  193 variables:
 $ pid       : int  2 4 5 7 10 11 14 18 25 31 ...
 $ acquir    : int  0 0 0 0 1 1 0 0 0 0 ...
 $ addit     : int  0 0 0 0 2 2 0 0 0 0 ...
 $ agre      : int  0 0 0 0 0 0 0 0 0 0 ...
 $ agreement : int  0 0 0 0 0 0 0 0 0 0 ...
 $ also      : int  1 0 0 0 2 2 0 0 0 0 ...
 $ american  : int  0 0 0 0 0 0 0 0 0 0 ...
 $ announc   : int  0 0 0 0 0 0 0 0 0 0 ...
 $ annual    : int  0 0 0 0 0 0 0 0 2 0 ...
 $ approv    : int  0 3 0 0 0 0 0 0 0 0 ...
 $ april     : int  0 0 0 0 0 0 0 0 1 0 ...
 $ bank      : int  0 7 0 0 0 0 0 0 0 0 ...
 $ base      : int  0 0 0 0 0 0 0 0 0 0 ...
 .
 .
 $... all of them are integer, except the class column
 .
 .
 $ class     : Factor w/ 10 levels "acq","corn","crude",..: 1 1 4 4 9 1 4 3 1 4 ...

这是naive.bayes() 行:

model <- naiveBayes(as.factor(class) ~ ., data = as.matrix(train), laplace = 3)

谁能告诉我为什么会这样?:

Error in sum(x) : invalid 'type' (character) of argument

【问题讨论】:

由于as.matrix(train),最终您的数据将转换为字符。尝试model &lt;- naiveBayes(class ~ ., data=train, laplace = 3) 或最终model &lt;- naiveBayes(train$class ~ ., data=train[, -c("class")], laplace = 3) @jogo 成功了!谢谢!我想接受你的回答,但如何? 我现在做了一个答案。第一个变体也起作用还是只有第二个? 我刚试过第一个。它奏效了。其他的没试过。 【参考方案1】:

由于as.matrix(train),您的数据最终会转换为字符。尝试

model <- naiveBayes(class ~ ., data=train, laplace = 3)

或最终

model <- naiveBayes(train$class ~ ., data=train[, -c("class")], laplace = 3)

第二个变体或多或少与第一个变体相同。公式右轴中的. 扩展为“所有其他变量”;所以它排除了 LHS 上提到的列class。 (更多信息在formula的文档中)

【讨论】:

以上是关于参数的无效“类型”(字符)的主要内容,如果未能解决你的问题,请参考以下文章

TypeError:获取参数数组的类型无效 numpy.ndarray,必须是字符串或张量。 (不能将 ndarray 转换为张量或操作。)

testthat `quasi_label` 和 `expect_match` 抛出“错误:参数类型无效”

AJAX请求返回HTTP 400 错误 - 请求无效 (Bad request)

Sqlserver 报错“参数数据类型 ntext/text 对于 replace 函数的参数 1 无效”的解决方案及原理分析扩展

JSON 写入错误中的类型无效,尝试通过 JSON 将自定义类发送到 .NET Web 服务

Symfony 4:参数的类型提示无效