比例函数 Returns: FUN(x, aperm(array(STATS, dims[perm]), order(perm)), ...) 出错
Scale Function Returns: Error in FUN(x, aperm(array(STATS, dims[perm]), order(perm)), ...)
正在尝试训练 NeuralNet,但我无法规范化我的数据。
为缩放定义最大和最小值工作正常。
maxs <- apply(tour_weahter_data, 2, max)
mins <- apply(tour_weahter_data, 2, min)
这是我要缩放的数据:
head(tour_weahter_data)
Start Time Starting Station ID Duration Distance Temperatur Humidity
1 2016-07-07 13:00:00 3063 12 578.7915 18 72
2 2016-07-07 13:00:00 3040 10 1262.4654 18 72
3 2016-07-07 13:00:00 3063 19 1660.0441 18 72
4 2016-07-07 13:00:00 3018 10 907.1427 18 72
5 2016-07-07 13:00:00 3076 10 1004.5161 18 72
6 2016-07-07 13:00:00 3034 4 448.0982 18 72
这是对函数的调用:
scaled <- as.data.frame(scale(tour_weahter_data, center = mins, scale = maxs - mins))
这是我收到的错误消息:
Error in FUN(x, aperm(array(STATS, dims[perm]), order(perm)), ...) :
non-numeric argument to binary operator
In addition: Warning message:
In scale.default(tour_weahter_data, center = mins, scale = maxs - :
NAs introduced by coercion
是我的数据有问题还是我功能使用不当?
您应该将 scale
与 numeric
变量一起使用,因此您必须仅将其与数字变量一起使用。
这是一种使用 dplyr
的方法。
library(dplyr)
vars_scale <- tour_weahter_data %>%
select_if(is.numeric) %>%
colnames()
scale_min_max <- function(x) scale(x, center = min(x), scale = max(x) - min(x))
tour_weahter_data %>%
mutate_at(vars_scale, scale_min_max)
## A tibble: 6 x 7
# Start[,1] Time_Starting Station_ID[,1] Duration[,1]
# <dbl> <dttm> <dbl> <dbl>
#1 0 2016-07-07 13:00:00 0.776 0.533
#2 0.2 2016-07-07 13:00:00 0.379 0.4
#3 0.4 2016-07-07 13:00:00 0.776 1
#4 0.6 2016-07-07 13:00:00 0 0.4
#5 0.8 2016-07-07 13:00:00 1 0.4
#6 1 2016-07-07 13:00:00 0.276 0
## ... with 3 more variables: Distance[,1] <dbl>,
## Temperatur[,1] <dbl>, Humidity[,1] <dbl>
正在尝试训练 NeuralNet,但我无法规范化我的数据。
为缩放定义最大和最小值工作正常。
maxs <- apply(tour_weahter_data, 2, max)
mins <- apply(tour_weahter_data, 2, min)
这是我要缩放的数据:
head(tour_weahter_data)
Start Time Starting Station ID Duration Distance Temperatur Humidity
1 2016-07-07 13:00:00 3063 12 578.7915 18 72
2 2016-07-07 13:00:00 3040 10 1262.4654 18 72
3 2016-07-07 13:00:00 3063 19 1660.0441 18 72
4 2016-07-07 13:00:00 3018 10 907.1427 18 72
5 2016-07-07 13:00:00 3076 10 1004.5161 18 72
6 2016-07-07 13:00:00 3034 4 448.0982 18 72
这是对函数的调用:
scaled <- as.data.frame(scale(tour_weahter_data, center = mins, scale = maxs - mins))
这是我收到的错误消息:
Error in FUN(x, aperm(array(STATS, dims[perm]), order(perm)), ...) : non-numeric argument to binary operator
In addition: Warning message:
In scale.default(tour_weahter_data, center = mins, scale = maxs - : NAs introduced by coercion
是我的数据有问题还是我功能使用不当?
您应该将 scale
与 numeric
变量一起使用,因此您必须仅将其与数字变量一起使用。
这是一种使用 dplyr
的方法。
library(dplyr)
vars_scale <- tour_weahter_data %>%
select_if(is.numeric) %>%
colnames()
scale_min_max <- function(x) scale(x, center = min(x), scale = max(x) - min(x))
tour_weahter_data %>%
mutate_at(vars_scale, scale_min_max)
## A tibble: 6 x 7
# Start[,1] Time_Starting Station_ID[,1] Duration[,1]
# <dbl> <dttm> <dbl> <dbl>
#1 0 2016-07-07 13:00:00 0.776 0.533
#2 0.2 2016-07-07 13:00:00 0.379 0.4
#3 0.4 2016-07-07 13:00:00 0.776 1
#4 0.6 2016-07-07 13:00:00 0 0.4
#5 0.8 2016-07-07 13:00:00 1 0.4
#6 1 2016-07-07 13:00:00 0.276 0
## ... with 3 more variables: Distance[,1] <dbl>,
## Temperatur[,1] <dbl>, Humidity[,1] <dbl>