尝试使用“bnlearn”实现一个简单的朴素贝叶斯分类器。继续收到错误“变量必须是数字,因子或有序因子”

问题描述 投票:0回答:1

我试图通过重新创建给我的数据结果在R中实现NB分类器。现在我只是测试训练数据本身,看看准确性是什么样的。

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

我想我理解错误,因为“胜利”和“失败”不是数值,但据我所知,它们不是因素吗?我将在下面发布我的代码。我正在使用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认识到“状态”是一个因素。

r machine-learning classification naivebayes
1个回答
1
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.