gpt4 book ai didi

r - R中的分类

转载 作者:行者123 更新时间:2023-12-04 11:00:47 25 4
gpt4 key购买 nike

我正在尝试在 R 中进行朴素贝叶斯分类。我在以下链接中看到了这个例子。

http://en.wikibooks.org/wiki/Data_Mining_Algorithms_In_R/Classification/Na%C3%AFve_Bayes

只有 2 行。先分类再预测。

> classifier<-naiveBayes(iris[,1:4], iris[,5]) 
> table(predict(classifier, iris[,-5]), iris[,5])

“虹膜数据集”上的相同代码工作正常。但是当我在我的数据集上应用相同的内容时,我遇到了一些错误。

我的数据集包含 4 个属性和第 4 个属性类属性。
> str(data1)
'data.frame': 1370 obs. of 4 variables:
$ TenScore : num 85 84.2 67.2 91.5 79.3 ...
$ TwelthScore : num 69 87.9 67.5 82.7 72.4 ...
$ GDegreeScore : num 63.3 70.7 61.3 78.2 62.1 ...
$ Got_Admission: chr "No" "No" "No" "No" ...

所以,我试过这个。
> classifier<-naiveBayes(data1[,1:3], data1[,4]) 
> table(predict(classifier, data1[,-4]), data1[,4])
Error in table(predict(classifier, data1[, -4]), data1[, 4]) :
all arguments must have the same length

执行命令时出现上述错误。当我只使用预测时,它给了我以下输出。
> predict(classifier, data1[,-4])
factor(0)
Levels:

str(data1) 'data.frame': 1370 obs. of 4 variables:
$ TenScore : num 85 84.2 67.2 91.5 79.3 ...
$ TwelthScore : num 69 87.9 67.5 82.7 72.4 ...
$ GDegreeScore : num 63.3 70.7 61.3 78.2 62.1 ...
$ Got_Admission: chr "No" "No" "No" "No" ...

请解释一下错误是什么以及如何解决?

最佳答案

我可以通过将 iris 的第 5 列更改为字符来产生相同的错误:

> iris[ , 5] <- as.character(iris[ , 5] )
> classifier<-naiveBayes(iris[,1:4], iris[,5])
> table(predict(classifier, iris[,-5]), iris[,5])
Error in table(predict(classifier, iris[, -5]), iris[, 5]) :
all arguments must have the same length
# The fix -------->
iris[ , 5] <- factor(as.character(iris[ , 5] ))
classifier<-naiveBayes(iris[,1:4], iris[,5])
table(predict(classifier, iris[,-5]), iris[,5])
# ---- output--------
setosa versicolor virginica
setosa 50 0 0
versicolor 0 47 3
virginica 0 3 47

所以你应该这样做:
  data1$ Got_Admission <- factor(data1$ Got_Admission)

如果您的 'Got_Admission' 列的顺序不正确,您将得到令人困惑的结果(GIGO 效应)。您应该首先查看内容:
table(data1$ Got_Admission)

关于r - R中的分类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8098279/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com