library(dplyr) library(caret) set.seed(123) trainIndex <- createDataPartition(data$value_per_sq_ft, p = .8, list = FALSE, times = 1) train <- data[ trainIndex,] test <- data[-trainIndex,] library(nnet) model1 <- nnet(value_per_sq_ft ~ ., data = train, size = 5, linout = TRUE) predict1 <- predict(model1, newdata = test) library(neuralnet) model2 <- neuralnet(value_per_sq_ft ~ ., data = train, hidden = c(5)) predict2 <- compute(model2, test %>% select(-value_per_sq_ft))$net.result改进这些代码,使之不报错
时间: 2024-01-02 22:02:37 浏览: 114
Learning-Data-Mining-with-R.zip_R 机器学习_data mining R code_data m
在你提供的代码中,我没有看到 `data` 变量的定义,因此我将使用 `iris` 数据集作为示例数据集。
首先,您需要安装并加载 `dplyr`、`caret`、`nnet` 和 `neuralnet` 包。接下来,您需要加载 `iris` 数据集。
```
library(dplyr)
library(caret)
library(nnet)
library(neuralnet)
data(iris)
```
然后,您需要划分数据集为训练集和测试集。您可以使用 `createDataPartition()` 函数来生成索引,然后使用这些索引来划分数据。
```
trainIndex <- createDataPartition(iris$Petal.Width, p = .8, list = FALSE, times = 1)
train <- iris[trainIndex,]
test <- iris[-trainIndex,]
```
请注意,我使用了 `Petal.Width` 作为响应变量,因为 `value_per_sq_ft` 在您的代码中没有定义。
接下来,您需要拟合两种不同的神经网络模型。首先,使用 `nnet` 包构建一个模型。
```
model1 <- nnet(Petal.Width ~ ., data = train, size = 5, linout = TRUE)
```
然后,使用 `predict()` 函数来进行预测。
```
predict1 <- predict(model1, newdata = test)
```
接下来,使用 `neuralnet` 包构建另一个模型。
```
model2 <- neuralnet(Petal.Width ~ ., data = train, hidden = c(5))
```
最后,使用 `compute()` 函数来进行预测。
```
predict2 <- compute(model2, test %>% select(-Petal.Width))$net.result
```
请注意,在 `compute()` 函数中,我使用了 `select(-Petal.Width)` 来删除测试集中的响应变量(`Petal.Width`)。这是因为 `neuralnet` 包要求您将响应变量从输入数据中删除。
如果您在执行上述代码时仍然遇到错误,请提供错误信息以便我帮助您解决问题。
阅读全文