【问题标题】:R NaiveBayes Classifier won't read type as "formula"R NaiveBayes 分类器不会将类型读取为“公式”
【发布时间】:2017-09-14 17:10:37
【问题描述】:

我正在使用 klaR 包中的 NaiveBayes 函数,由于某种原因,该函数不会将我的输入参数读取为公式。我知道 NaiveBayes 函数有两种方法,一种是“默认”,另一种是“公式”的输入类。当我运行 NaiveBayes 函数时,它会将我的输入公式读取为默认类型并引发错误。我的代码如下:

trainData <- read.csv("train.txt")
trainNB <- NaiveBayes(Type~., data = trainData)

运行这些行后我收到的错误是:

Error in NaiveBayes.default(X, Y, ...) :
  grouping/classes object must be a factor

trainData的类是数据框,trainData的前10行如下(我一共83行):

    Area Perimeter Compactness Length Width Asymmetry Groove Type
1  14.80     14.52      0.8823  5.656 3.288    3.1120  5.309    1
2  14.79     14.52      0.8819  5.545 3.291    2.7040  5.111    1
3  14.99     14.56      0.8883  5.570 3.377    2.9580  5.175    1
4  19.14     16.61      0.8722  6.259 3.737    6.6820  6.053    0
5  15.69     14.75      0.9058  5.527 3.514    1.5990  5.046    1
6  14.11     14.26      0.8722  5.520 3.168    2.6880  5.219    1
7  13.16     13.55      0.9009  5.138 3.201    2.4610  4.783    1
8  16.16     15.33      0.8644  5.845 3.395    4.2660  5.795    0
9  15.01     14.76      0.8657  5.789 3.245    1.7910  5.001    1
10 14.11     14.10      0.8911  5.420 3.302    2.7000  5.000    1

任何帮助将不胜感激。谢谢!

【问题讨论】:

    标签: r naivebayes


    【解决方案1】:

    我认为你的因变量不是一个因素:

    你应该这样做,trainData$Type &lt;- as.factor(trainData$Type)

    想想这个玩具例子:

    library(e1071)
    m <- naiveBayes(Species ~ ., data = iris)
    

    如果你想看结构,你会注意到 Species 是因素,这里的 Species 是你的因变量:

    > str(iris)
    'data.frame':   150 obs. of  5 variables:
     $ Sepal.Length: num  5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...
     $ Sepal.Width : num  3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
     $ Petal.Length: num  1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
     $ Petal.Width : num  0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
     $ Species     : Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 1 1 1 1 1 1 ...
    > 
    

    【讨论】:

    • 谢谢!这确实有效!就我而言,我的因变量存储在我的 trainData 变量的最后(第 8)列。我做了trainData[,8] &lt;- factor(trainData[,8]) 并运行了完全相同的trainNB 行,效果很好!
    猜你喜欢
    • 2017-07-10
    • 2015-09-05
    • 1970-01-01
    • 2017-01-14
    • 2018-05-10
    • 2016-05-09
    • 2017-11-13
    • 2012-02-05
    • 2018-06-28
    相关资源
    最近更新 更多