классификация в R - PullRequest
       5

классификация в R

4 голосов
/ 11 ноября 2011

Я пытаюсь провести наивную байесовскую классификацию в 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])

Этот же код в "наборе данных iris" работает нормально.Но когда я применил то же самое к своему набору данных, я получаю некоторые ошибки.

Мой набор данных содержит 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" ...

Пожалуйста, объясните мне, в чем ошибки и как их решить?

1 Ответ

3 голосов
/ 11 ноября 2011

Я могу выдать ту же ошибку, изменив 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...