r - 尝试使用 "bnlearn"实现一个简单的朴素贝叶斯分类器。不断出现错误 "variables must be either numeric, factors or ordered factors"

标签 r machine-learning classification naivebayes

我正在尝试通过重新创建给我的数据结果来在 R 中实现 NB 分类器。现在我只是对训练数据本身进行测试,看看准确性如何。

数据集中有 29 个变量,其中一个称为“状态”。它有两个值:Win 和 Lose。我将训练数据分为大约 2/3 训练和 1/3 测试。目标是确定 Status 预测输赢的准确性。

我想我理解这个错误,因为“赢”和“输”不是数值,但据我了解,它们不会是因素吗?我将在下面发布我的代码。我正在使用 http://www.bnlearn.com/documentation/man/naive.bayes.html 中的 bnlearn 示例作为我的基础。如果有更好的例子,请告诉我。

#Read in training data
trainingdata <- read.csv("C:\\.....filepath.csv", header=T)

#Split data into training and test sets
training.set = trainingdata[1:1200, ]
test.set = trainingdata[1201:1860, ]

#Train model
bn = naive.bayes(training.set, "Status") 
fitted = bn.fit(bn, training.set)

#Predict
pred = predict(fitted, test.set)
table(pred, test.set[, "Status"])

我开始从 bn = naive.bayes(training.set, "Status") 行收到错误。具体错误显示“data.type(x) 中的错误:变量必须是数字、因子或有序因子

有没有办法让 bnlearn 认识到“状态”是一个因素。

最佳答案

几年后回到这一点,我意识到我从未用答案更新过它,并且从那时起就没有人发布解决方案供我接受。

Cotton.Rockwood 的假设是正确的。使用bnlearn的朴素贝叶斯分类器,所有变量都需要是因子,否则你会遇到这个错误。

关于r - 尝试使用 "bnlearn"实现一个简单的朴素贝叶斯分类器。不断出现错误 "variables must be either numeric, factors or ordered factors",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33634863/

相关文章:

python - keras datagen.flow_from_directory 类模式分类获取标签错误

r - R 的 powerlaw 包中连续与离散对数正态分布的似然函数差异

r - 如何将二进制小数转换为 R 中的十进制小数?

r - ggplot2中的四分位距

machine-learning - 使用 ChatBot 订购电影票

machine-learning - 具有烤宽面条精度的神经网络

python - 使用 Keras 模型进行预测时出错

c# - 如何在 C# 中针对大量维度最好地实现 K 最近邻?

python - Python scikit learn 中分类和回归分数的差异

r - 根据年数计算连续连胜