r - 如何创建最佳功能更好?
问题描述
我可以为“越多越好”和“越少越好”创建一个功能,例如
normalize <- function(x, na.rm=na.rm, relation=relation) {
if (relation == "More is better") {
normalize <- ((x - min(x, na.rm=na.rm))/
(max(x, na.rm=na.rm) - min(x, na.rm=na.rm)))
} else {
normalize <- 1 - ((x - min(x, na.rm=na.rm))/
(max(x, na.rm=na.rm) - min(x, na.rm=na.rm)))
}
return(normalize)
}
这是一个小数据
set.seed(123)
value <- runif(50, min=3, max=8.5)
“最佳值更好”应该将“越多越好”到一个范围或点(例如,当前数据为 6.5-7.5),在最佳范围内,归一化值应该是 1 和超出范围或点,它应该计算为“越少越好”。我怎样才能在 R 中实现这一点?
解决方案
实际上,您可以只转换子集。
FUN <- function(x, lower, upper, ...) {
normalize <- function(x, ...) (x - min(x, ...))/(max(x, ...) - min(x, ...))
x[x < lower] <- normalize(x[x < lower], ...)
x[x > upper] <- 1 - normalize(x[x > upper], ...)
x[x >= lower & x <= upper] <- 1
return(x)
}
lower <- 6.5; upper <- 7.5
value.star <- FUN(value, lower, upper, na.rm=TRUE)
plot(value, value.star, pch=20)
abline(v=c(lower, upper), lty=2)
数据
set.seed(123)
value <- runif(2.5e2, min=3, max=8.5)
推荐阅读
- algorithm - 迭代、自下而上、分而治之的算法
- android - 当 adjustVolumeDisabled 设置为 true 时,音量静音
- reactjs - 即使我已经定义了密钥,列表中的每个孩子都应该有一个唯一的“密钥”道具
- c# - 从“VisitLambda”调用时,重写“System.Linq.Expressions.ParameterExpression”类型的节点必须返回非空值
- azure-devops - 将构建状态推送到 GitHub
- javascript - 当宽度小于最大宽度时如何包装元素?
- azure - 调用由 AAD 保护的 azure 函数
- python - 在 googlecolab 或 Kaggle 内核上没有检测到
- c# - 由于未知原因在 C# 中使用字符串数组时出现多个运行时异常
- tensorflow - 较大数量的过滤器比 conv2D 层中较少数量的过滤器性能更差