R中K-NN方法的R平方

R中K-NN方法的R平方,r,prediction,knn,R,Prediction,Knn,我们有一个用KNN方法预测Y的数据库,我们希望估计预测误差(Ypredict Yobserved),我的问题是如何计算R中这类模型的R平方? 谢谢,您可以使用以下公式计算: 由于您没有提供任何数据,我将使用内置的mtcars数据进行说明。我会把它全部写出来,这样就很容易映射到维基百科公式 library(FNN) TestSample = sample(nrow(mtcars), 5) ## predict values of mpg for the test sample MTC_KNN =

我们有一个用KNN方法预测Y的数据库,我们希望估计预测误差(Ypredict Yobserved),我的问题是如何计算R中这类模型的R平方?
谢谢,

您可以使用以下公式计算:

由于您没有提供任何数据,我将使用内置的
mtcars
数据进行说明。我会把它全部写出来,这样就很容易映射到维基百科公式

library(FNN)
TestSample = sample(nrow(mtcars), 5)
## predict values of mpg for the test sample
MTC_KNN = knn.reg(mtcars[-TestSample, -1], 
            mtcars[TestSample, -1], mtcars[-TestSample, 1]) 

## Now compute R-square
SSres = sum((mtcars[TestSample, 1] - MTC_KNN$pred)^2)
SStot = sum((mtcars[TestSample, 1] - mean(mtcars[-TestSample, 1]))^2)
Rsquare = 1 - SSres/SStot

preds因为您没有提供数据,所以我主要只是在这里提供了一些数据。实现类似于第一个答案,但是您应该真正使用函数来实现这一点

       # Y_Predict <- c(1:10)
       #Y_Observed <- c(10:19)



        rss <- function(Y_Predict,Y_Observed)
        {
          return(sum((Y_Predict - Y_Observed) ^ 2))
        }

        tss <- function(Y_Predict,Y_Observed)
        {
          return(sum((Y_Observed - mean(Y_Observed)) ^ 2))
        }


        r_square <- function(rss,tss)
        {
          return(1 - (rss(Y_Predict,Y_Observed)/ tss(Y_Predict,Y_Observed)))
        }

        #Confirming it runs
        # rss(Y_Predict,Y_Observed)
        #tss(Y_Predict,Y_Observed)
        #r_square(Y_Predict,Y_Observed)

#Y#您是否有一些关于如何在R中生成模型的工作代码?
       # Y_Predict <- c(1:10)
       #Y_Observed <- c(10:19)



        rss <- function(Y_Predict,Y_Observed)
        {
          return(sum((Y_Predict - Y_Observed) ^ 2))
        }

        tss <- function(Y_Predict,Y_Observed)
        {
          return(sum((Y_Observed - mean(Y_Observed)) ^ 2))
        }


        r_square <- function(rss,tss)
        {
          return(1 - (rss(Y_Predict,Y_Observed)/ tss(Y_Predict,Y_Observed)))
        }

        #Confirming it runs
        # rss(Y_Predict,Y_Observed)
        #tss(Y_Predict,Y_Observed)
        #r_square(Y_Predict,Y_Observed)