R 中的 R 平方 - 如何在 R 中计算 R2?

您好,读者! 在本文中,我们将通过机器学习的一个重要概念 - R(R2)在R(R)编程中。

让我们开始吧!!!


R 平方错误指数的重要性

让我们首先了解错误指标在数据科学和机器学习领域的重要性!!

**错误指标使我们能够评估机器学习模型在特定数据集上的性能。

根据算法类别,有各种错误指数模型。

我们有 [混淆矩阵]( / 社区 / 教程 / 混淆矩阵-in-r)来处理和评估分类算法,而 R 平方是一个重要的错误指数来评估回归算法所做的预测。

R平方(R2)是一个回归错误指数,它代表了独立变量能够描述响应/目标变量的值的值。

因此,R平方模型描述了目标变量如何通过将独立变量的组合作为单个单位来解释。

R 平方值在 0 到 1 之间,由下面的公式表示:

R2=1 SSres / SStot

这里,

  • SSres: 剩余错误的平方的总和
  • SStot: 它代表了错误的总和

永远记住,R平方值越高,预测的模型就越好!


I. R 方位 R 与线性回归

在本例中,我们已经在线性回归模型上实现了R平方错误指数的概念。

  1. 最初,我们使用 read.csv() 函数加载我们的数据集.
  2. 下一步是将数据分为训练和测试数据集。 这是通过使用 createDataPartition() 方法实现的.
  3. 在建模之前,我们已经指定了我们错误指标的自定义函数,如下面的示例所示
  4. 最后一步是使用 lm() 函数应用线性回归模型,然后我们调用了用户定义的 R 平方函数来评估模型 的性能。

** 例子:**

 1#Removed all the existing objects
 2rm(list = ls())
 3#Setting the working directory
 4setwd("D:/Ediwsor_Project - Bike_Rental_Count/")
 5getwd()
 6
 7#Load the dataset
 8bike_data = read.csv("day.csv",header=TRUE)
 9
10### SAMPLING OF DATA -- Splitting of Data columns into Training and Test dataset ###
11categorical_col_updated = c('season','yr','mnth','weathersit','holiday')
12library(dummies)
13bike = bike_data
14bike = dummy.data.frame(bike,categorical_col_updated)
15dim(bike)
16
17#Separating the depenedent and independent data variables into two dataframes.
18library(caret)
19set.seed(101)
20split_val = createDataPartition(bike$cnt, p = 0.80, list = FALSE) 
21train_data = bike[split_val,]
22test_data = bike[-split_val,]
23
24### MODELLING OF DATA USING MACHINE LEARNING ALGORITHMS ###
25#Defining error metrics to check the error rate and accuracy of the Regression ML algorithms
26
27#1. MEAN ABSOLUTE PERCENTAGE ERROR (MAPE)
28MAPE = function(y_actual,y_predict){
29  mean(abs((y_actual-y_predict)/y_actual))*100
30}
31
32#2. R SQUARED error metric -- Coefficient of Determination
33RSQUARE = function(y_actual,y_predict){
34  cor(y_actual,y_predict)^2
35}
36
37##MODEL 1: LINEAR REGRESSION
38linear_model = lm(cnt~., train_data) #Building the Linear Regression Model on our dataset
39summary(linear_model)
40linear_predict=predict(linear_model,test_data[-27]) #Predictions on Testing data
41
42LR_MAPE = MAPE(test_data[,27],linear_predict) # Using MAPE error metrics to check for the error rate and accuracy level
43LR_R = RSQUARE(test_data[,27],linear_predict) # Using R-SQUARE error metrics to check for the error rate and accuracy level
44Accuracy_Linear = 100 - LR_MAPE
45
46print("MAPE: ")
47print(LR_MAPE)
48print("R-Square: ")
49print(LR_R)
50print('Accuracy of Linear Regression: ')
51print(Accuracy_Linear)

出发点:**

如下所示,R平方值为0.82,也就是说,该模型对我们的数据工作得很好。

 1> print("MAPE: ")
 2[1] "MAPE: "
 3> print(LR_MAPE)
 4[1] 17.61674
 5> print("R-Square: ")
 6[1] "R-Square: "
 7> print(LR_R)
 8[1] 0.8278258
 9> print('Accuracy of Linear Regression: ')
10[1] "Accuracy of Linear Regression: "
11> print(Accuracy_Linear)
12[1] 82.38326

R 平方值使用 summary() 函数

我们甚至可以使用R中的summary()函数来提取模型后的R平方值。

在下面的示例中,我们将线性回归模型应用于我们的数据框架(/community/tutorials/data-frames-in-r-programming),然后使用‘summary()$r.squared’来获得r平方值。

** 例子:**

 1rm(list = ls())
 2
 3A <- c(1,2,3,4,2,3,4,1) 
 4B <- c(1,2,3,4,2,3,4,1) 
 5a <- c(10,20,30,40,50,60,70,80) 
 6b <- c(100,200,300,400,500,600,700,800) 
 7data <- data.frame(A,B,a,b) 
 8
 9print("Original data frame:\n") 
10print(data) 
11
12ml = lm(A~a, data = data) 
13
14# Extracting R-squared parameter from summary 
15summary(ml)$r.squared

出发点:**

 1[1] "Original data frame:\n"
 2  A B a b
 31 1 1 10 100
 42 2 2 20 200
 53 3 3 30 300
 64 4 4 40 400
 75 2 2 50 500
 86 3 3 60 600
 97 4 4 70 700
108 1 1 80 800
11
12[1] 0.03809524

结论

由此,我们已经到这个话题的尽头. 请自由评论下面,如果你遇到任何问题。

直到那时,快乐的学习!!! :)

Published At
Categories with 技术
Tagged with
comments powered by Disqus