📜  在 R 编程中使用 k-Nearest Neighbors 进行回归(1)

📅  最后修改于: 2023-12-03 15:37:28.296000             🧑  作者: Mango

在 R 编程中使用 k-Nearest Neighbors 进行回归

简介

k-Nearest Neighbors(简称 KNN)是一种基于类别判定的算法,适用于分类和回归问题。在本文中,我们将重点讨论 KNN 在回归问题中的应用。KNN 算法基于所有训练数据中最近的 k 个数据点来预测测试数据点的值。在回归问题中,KNN 算法将 k 个最近邻居的平均值作为预测结果。

在 R 编程中,我们可以使用 caret 包进行 KNN 回归分析。

步骤

本文将演示使用 caret 包实现 KNN 回归分析的步骤,以下是具体的步骤:

1. 安装并加载 caret

首先,我们需要安装 caret 包,使用以下代码:

install.packages("caret")

然后,我们需要加载 caret 包,使用以下代码:

library(caret)
2. 载入数据

我们使用 mtcars 数据集作为示例数据,可以使用以下代码载入数据:

data(mtcars)
3. 划分训练集和测试集

在进行回归分析之前,我们需要将数据集划分为训练集和测试集,以便评估模型的性能。可以使用以下代码进行划分:

set.seed(123)
training.samples <- mtcars$mpg %>%
  createDataPartition(p = 0.8, list = FALSE)
train.data <- mtcars[training.samples, ]
test.data <- mtcars[-training.samples, ]
4. 进行 KNN 回归分析

现在,我们可以使用 train 函数进行 KNN 回归分析,使用以下代码:

knn.model <- train(mpg ~ ., 
                   data = train.data, 
                   method = "knn", 
                   trControl = trainControl(method = "cv"), 
                   preProcess = c("center", "scale"))

在以上代码中,mpg 是因变量(即我们要预测的变量),. 表示使用所有自变量。method = "knn" 表示选择 KNN 作为分析方法。trControl = trainControl(method = "cv") 表示使用交叉验证训练模型。preProcess = c("center", "scale") 表示在训练模型之前进行数据预处理,即将数据进行标准化处理。

5. 预测值

现在,我们可以使用 predict 函数预测测试集的结果,使用以下代码:

test.pred <- predict(knn.model, newdata = test.data)
6. 评估模型性能

最后,我们使用以下代码评估模型的性能:

library(Metrics)
rmse(test.data$mpg, test.pred)

其中 rmse 函数计算预测值与真实值之间的均方根误差(RMSE)。

结论

在本文中,我们讨论了如何使用 caret 包进行 KNN 回归分析。通过使用 caret 包,我们可以轻松地实现 KNN 回归分析,并评估模型的性能。