gpt4 book ai didi

r - 如何调整随机森林代码以进行质量预测

转载 作者:行者123 更新时间:2023-11-30 09:15:52 26 4
gpt4 key购买 nike

我是机器学习新手。我有这个数据集 - http://archive.ics.uci.edu/ml/datasets/Wine+Quality 。我必须预测 Wine 的质量,这是数据集的最后一列。我考虑过为此应用神经网络或随机森林,其中 NN 给出了大约 55% 的准确率,而随机森林到目前为止我设法获得了 73% 的准确率。我想进一步提高准确性。下面是我编写的代码。

wineq <- read.csv("wine-quality.csv",header = TRUE)
str(wineq)

wineq$taste <- ifelse(wineq$quality < 6, 'bad', 'good')
wineq$taste[wineq$quality == 6] <- 'normal'
wineq$taste <- as.factor(wineq$taste)
set.seed(54321)
train <- sample(1:nrow(wineq), .75 * nrow(wineq))
wineq_train <- wineq[train, ]
wineq_test <- wineq[-train, ]

library(randomForest)

rf=randomForest(taste~.-
quality,data=wineq_train,importance=TRUE,ntree=100)

rf_preds = predict(rf,wineq_test)
rf_preds
table(rf_preds, wineq_test$taste)

输出:

table(rf_preds, wineq_test$taste)

rf_preds bad good normal
bad 302 11 81
good 7 163 36
normal 93 101 431

如果我想使用tuneRF,它会给出以下错误:

   fgl.res <- tuneRF(x = wineq[train, ], y= wineq[-train, ], 
stepFactor=1.5)

Error in randomForest.default(x, y, mtry = mtryStart, ntree = ntreeTry,
: length of response must be the same as predictors

最佳答案

您需要传递至tuneRF特征变量为x响应变量为 y .

因此,首先找到响应变量的列位置 ( taste ):

resp_pos <- which(colnames(wineq) == "taste")

然后:

fgl.res <- tuneRF(x = wineq[train, -resp_pos ], y= wineq[-train, resp_pos], 
stepFactor=1.5)

我还注意到您使用 wineq$taste <- ifelse(wineq$quality < 6, 'bad', 'good')根据 taste 列查找您的"new"响应 ( quality ) 。请注意,这完全没问题,但您需要删除列 quality训练前。

如果您不这样做,您的模型将过于乐观,因为它会选择以下内容:

quality < 6永远意味着 taste=="bad"

关于r - 如何调整随机森林代码以进行质量预测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56070949/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com