Как найти среднеквадратическую ошибку в R? - PullRequest
0 голосов
/ 17 декабря 2018

Я пытаюсь найти среднеквадратическую ошибку на модели ksvm, а также выводить результаты с использованием кадра данных airquality.Это то, что я до сих пор:

library(kernlab)
library(ggplot2)
AQ <- airquality

set.seed(1)
randIndex <- sample(1:dim(AQ)[1])
cutPoint2_3<- floor(2 * dim(AQ)[1]/3)
cutPoint2_3
TrainAQ <- AQ[randIndex[1:cutPoint2_3],]
TestAQ <- AQ[randIndex[(cutPoint2_3+1) :dim(AQ)[1]],]

svmOutput <- ksvm(Ozone ~., data=TrainAQ, kernel = "rbfdot", 
kpar='automatic',C=5,cross=3, prob.model=TRUE)

#Test the model on the testing dataset, and compute the Root Mean Squared    Error
svmOutputtest <- ksvm(Ozone ~., data=TestAQ, 
                      kernel = "rbfdot",
                      kpar="automatic",
                      C=5,
                      cross=3,
                      prob.model=TRUE)

#root mean squared is ?

#Plot the   results. Use a scatter  plot. Have the  x-axis  represent    temperature, the   y-axis  represent   wind,   the point   size    and color    represent  the error,  as  defined by  the actual  ozone   level minus the  predicted  ozone   level).
ggplot(AQ,aes(x=Temp,y= Wind,color=svmOutput$Error,shape=svmOutput$Error)) +geom_point(size=5)

1 Ответ

0 голосов
/ 17 декабря 2018

В этом кадре данных TestAQ есть куча NA, поэтому я сначала удалил бы их:

  TestAQ <- TestAQ[complete.cases(TestAQ), ]

Затем вычисление среднеквадратичной ошибки является простым делом синтаксического анализа, который описывает описанную терминологию:

 sqrt( mean( TestAQ$Ozone-predict(svmOutputtest,newdata=TestAQ ))^2) 
[1] 2.182599

Вызов ggplot не имеет смысла, поскольку этот объект svmOutputtest является S4, поэтому к нему нельзя получить доступ, и у него нет слота Error, поэтому простая замена @ на $ не исправит синтаксическую ошибку.Библиотека написана ggplot2.Вопросы из нескольких частей устарели в SO, поэтому я не буду пытаться получить разъяснения по этому вопросу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...