对R语言MASS包中的Boston数据集做回归分析,以medv为因变量,其余变量为自变量,以线性回归,knn,支持向量回归为分析方法,80%为训练集,其余为测试集,输出RMSE
时间: 2024-09-19 10:01:07 浏览: 71
在R语言中,要对MASS包中的Boston房价数据集进行回归分析,我们可以按照以下步骤操作:
首先,你需要安装并加载所需的包,包括`MASS`, `caret`, 和 `e1071`(用于KNN和SVM)。你可以通过运行以下命令来完成这一步:
```R
install.packages("MASS")
install.packages("caret")
install.packages("e1071")
library(MASS) # 加载MASS包
library(caret) # 加载caret包用于划分数据集和模型评估
library(e1071) # 加载e1071包,包含svm函数
# 加载Boston数据集
data(Boston)
```
接下来,我们将数据集分为训练集和测试集,并选择需要的自变量作为特征,`medv`作为因变量:
```R
set.seed(123) # 设置随机种子以保证结果可复现
trainIndex <- createDataPartition(Boston$medv, p = .8, list = FALSE) # 划分80%的数据为训练集
trainData <- Boston[trainIndex, -1] # 训练集特征
trainLabels <- Boston[trainIndex, "medv"] # 训练集目标值
testData <- Boston[-trainIndex, -1] # 测试集特征
testLabels <- Boston[-trainIndex, "medv"] # 测试集目标值
```
然后,我们分别用线性回归、KNN回归和SVM回归对数据进行拟合,并计算每个模型的RMSE:
```R
# 线性回归
lmModel <- lm(medv ~ ., data = trainData) # 包含所有自变量
lmPred <- predict(lmModel, testData)
rmse_lm <- sqrt(mean((testLabels - lmPred)^2))
# KNN回归
knnFit <- knn.reg(trainData, trainLabels, testData[, -1], k = 5) # 使用k=5
rmse_knn <- sqrt(mean((testLabels - knnFit)^2))
# 支持向量回归 (SVM)
svrModel <- svm(medv ~ ., data = trainData, kernel = "linear") # 线性核假设
svrPred <- predict(svrModel, testData)
rmse_svr <- sqrt(mean((testLabels - svrPred)^2))
```
最后,输出三种模型的RMSE:
```R
cat("Linear Regression RMSE:", rmse_lm, "\n")
cat("K-Nearest Neighbors RMSE:", rmse_knn, "\n")
cat("Support Vector Regression RMSE:", rmse_svr, "\n")
```
这将显示每种回归方法在测试集上的平均绝对误差(即RMSE)。
阅读全文