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

Trying to implement a simple Naive Bayes classifier using "bnlearn". Keep getting error "variables must be either numeric, factors or ordered factors"

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

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

我想我理解错误,因为 "Win" 和 "Lose" 不是数值,但据我了解,它们不是因子吗?我将在下面 post 我的代码。我使用 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") 行得到错误。具体错误说 "Error in data.type(x) : variables must be either numeric, factors or ordered factors

有什么方法可以让 bnlearn 认识到 "Status" 是一个因素。

多年后回想起来,我意识到我从未用答案更新它,从那以后也没有人发布解决方案让我接受。

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