运行library(caret) library(neuralnet) data <- read.csv("housing_renamed.csv") data$year_built[is.na(data$year_built)] <- median(data$year_built, na.rm = TRUE) predictors <- subset(data, select = -c(value_per_sq_ft)) response <- data$value_per_sq_ft ctrl <- trainControl(method = "cv", number = 3) model1 <- train(response ~ ., data = predictors, method = "neuralnet", trControl = ctrl) model2 <- train(response ~ ., data = predictors, method = "neuralnet", trControl = ctrl) print(model1) print(model2)出现Something is wrong; all the RMSE metric values are missing:报错
时间: 2024-01-21 18:04:19 浏览: 179
这个错误可能是由于数据中存在缺失值导致的。你需要检查数据中是否存在其他缺失值,并对其进行处理。另外,你可以尝试在train函数中添加一个参数preProcess,将其设置为"impute",以对缺失值进行处理。例如:
```
model1 <- train(response ~ ., data = predictors, method = "neuralnet",
trControl = ctrl, preProcess = "impute")
```
你可以尝试这个方法来解决这个错误。
相关问题
library(tidyverse) library(readxl) library(caret) data1 <- read_csv("111.csv") data2 <- na.omit(data1) print(data1) dim(data2) head(data2)
这不是一个问题,而是一段 R 代码。这段代码的作用是加载 tidyverse、readxl 和 caret 三个 R 包,然后读取名为 "111.csv" 的 CSV 文件,将其存储在 data1 变量中。接着使用 na.omit() 函数删除 data1 中的缺失值,并将结果存储在 data2 变量中。最后打印出 data1 的内容,输出 data2 的维度和前几行内容。如果您有任何具体问题或者需要解释,请告诉我。
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改进这些代码,使之不报错
在你提供的代码中,我没有看到 `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` 包要求您将响应变量从输入数据中删除。
如果您在执行上述代码时仍然遇到错误,请提供错误信息以便我帮助您解决问题。
阅读全文