gpt4 book ai didi

r - 如何使用库(插入符号)更改指标?

转载 作者:行者123 更新时间:2023-12-04 01:02:22 24 4
gpt4 key购买 nike

我想使用以下方法将度量从 RMSE 更改为 RMSLE

 caret library

给定一些样本数据:
  ivar1<-rnorm(500, mean = 3, sd = 1)
ivar2<-rnorm(500, mean = 4, sd = 1)
ivar3<-rnorm(500, mean = 5, sd = 1)
ivar4<-rnorm(500, mean = 4, sd = 1)
dvar<-rpois(500, exp(3+ 0.1*ivar1 - 0.25*ivar2))

data<-data.frame(dvar,ivar4,ivar3,ivar2,ivar1)



ctrl <- rfeControl(functions=rfFuncs,
method="cv",
repeats = 5,
verbose = FALSE,
number=5)

model <- rfe(data[,2:4], data[,1], sizes=c(1:4), rfeControl=ctrl)

这里我想改成 RMSLE 并保持图形的想法
plot <-ggplot(model,type=c("g", "o"), metric="RMSE")+ scale_x_continuous(breaks = 2:4, labels = names(data)[2:4])

最佳答案

我不确定如何/是否可以轻松地将 RMSE 转换为 RMSLE,因此您可以尝试更改控制功能。

rfFuncs$summary它调用一个函数 postResample .这是计算 RMSE 的地方 - 查看部分

mse <- mean((pred - obs)^2)
n <- length(obs)
out <- c(sqrt(mse), resamplCor^2)

所以你可以修改这个函数来计算 RMSLE:
msle <- mean((log(pred) - log(obs))^2)
out <- sqrt(msle)
}
names(out) <- "RMSLE"

那么如果这个修改后的函数已经保存在一个名为 mypostResample 的函数中,然后您需要更新 rfFuncs$summary .

总而言之:

首先更新汇总函数 - 这将使用 RMSLE 调用新函数
newSumm <- function (data, lev = NULL, model = NULL) 
{
if (is.character(data$obs))
data$obs <- factor(data$obs, levels = lev)
mypostResample(data[, "pred"], data[, "obs"])
}

然后定义新函数来计算 RMSLE
mypostResample <- function (pred, obs) 
{
isNA <- is.na(pred)
pred <- pred[!isNA]
obs <- obs[!isNA]

msle <- mean((log(pred) - log(obs))^2)
out <- sqrt(msle)
names(out) <- "RMSLE"

if (any(is.nan(out)))
out[is.nan(out)] <- NA
out
}

更新 rfFuncs
# keep old settings for future use
oldSumm <- rfFuncs$summary

# update with new function
rfFuncs$summary <- newSumm

ctrl <- rfeControl(functions=rfFuncs,
method="cv",
repeats = 5,
verbose = FALSE,
number=5)
set.seed(1)
model <- rfe(data[,2:4], data[,1], sizes=c(1:4), rfeControl=ctrl, metric="RMSLE")

# plot
ggplot(model,type=c("g", "o"), metric="RMSLE")+ scale_x_continuous(breaks = 2:4, labels = names(data)[2:4])

关于r - 如何使用库(插入符号)更改指标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28232658/

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