【问题标题】:Using the naive Bayes function on a test and training set of data在测试和训练数据集上使用朴素贝叶斯函数
【发布时间】:2020-03-08 17:25:35
【问题描述】:

我正在尝试对训练和测试数据集使用 NaiveBayes 函数。我正在使用这个有用的网站:https://rpubs.com/riazakhan94/naive_bayes_classifier_e1071

但是,由于某种原因它不起作用,这是我得到的错误:“表中的错误(train$Class,trainPred):所有参数必须具有相同的长度。”

这是我正在使用的代码,我猜它是一个超级简单的修复程序。数据集的 x 和 y 列在类列上进行预测:

https://github.com/samuelc12359/NaiveBayes.git


test <- read.csv(file="TestX.csv",header=FALSE)
train <- read.csv(file="TrainX.csv",header=FALSE)

Names <- c("x","y","Class")
colnames(test)<- Names
colnames(train)<- Names

NBclassfier=naiveBayes(Class~x+y, data=train)
print(NBclassfier)


trainPred=predict(NBclassfier,train, type="class")
trainTable=table(train$Class, trainPred)
testPred=predict(NBclassfier, newdata=test, type="class")
testTable=table(test$Class, testPred)
print(trainTable)
print(testTable)

【问题讨论】:

    标签: r naivebayes


    【解决方案1】:

    您需要将Class 列转换为因子,例如像这样:

    train$Class = factor(train$Class)
    test$Class = factor(test$Class)
    

    然后当您调用naiveBayes() 进行训练,然后再进行预测时,它会按照您的预期进行。

    或者,您可以将预测类型更改为 "raw" 并直接将其转化为结果。例如。像这样:

    train_predictions = predict(NBclassfier,train, type="raw")
    trainPred = 1 * (train_predictions[, 2] >= 0.5 )
    trainTable=table(train$Class, trainPred)
    test_predictions = predict(NBclassfier, newdata=test, type="raw")
    testPred = 1 * (test_predictions[, 2] >= 0.5 )
    testTable=table(test$Class, testPred)
    print(trainTable)
    print(testTable)
    

    【讨论】:

    • 你是我在互联网上最喜欢的人,非常感谢!!!!
    猜你喜欢
    • 2014-02-21
    • 2020-06-28
    • 2015-06-25
    • 2023-03-23
    • 2014-08-13
    • 2018-05-06
    • 1970-01-01
    • 1970-01-01
    • 2020-09-13
    相关资源
    最近更新 更多