r - R中的KERAS:Summary.factor中的错误(c(1L,1L,1L,1L,1L,1L,1L,1L,1L,1L,1L,1L,:'min'对因子没有意义
问题描述
我想根据
https://blogs.rstudio.com/tensorflow/posts/2018-01-24-keras-fraud-autoencoder/包含以下数据:
TX_ID SENDER_ACCOUNT_ID RECEIVER_ACCOUNT_ID TX_TYPE TX_AMOUNT TIMESTAMP
Min. : 1 Min. : 0 Min. : 0 TRANSFER:12476012 Min. : 0 Min. : 0.00
1st Qu.: 3119004 1st Qu.:25007 1st Qu.:23989 1st Qu.: 21 1st Qu.: 49.00
Median : 6238006 Median :49936 Median :48825 Median : 155 Median : 99.00
Mean : 6238006 Mean :49542 Mean :49532 Mean : 22643 Mean : 99.46
3rd Qu.: 9357009 3rd Qu.:75006 3rd Qu.:73955 3rd Qu.: 448 3rd Qu.:149.00
Max. :12476012 Max. :99999 Max. :99999 Max. :21474836 Max. :199.00
IS_FRAUD ALERT_ID
False:12458960 Min. : -1.000
True : 17052 1st Qu.: -1.000
Median : -1.000
Mean : 1.894
3rd Qu.: -1.000
Max. :3999.000
>
> str(df)
'data.frame': 12476012 obs. of 8 variables:
$ TX_ID : int 1 2 3 4 5 6 7 8 9 10 ...
$ SENDER_ACCOUNT_ID : int 5942 86700 86700 86700 86700 86700 86700 86700 86700 86700 ...
$ RECEIVER_ACCOUNT_ID: int 92982 43995 95516 83911 82801 10605 88864 25971 74981 42920 ...
$ TX_TYPE : Factor w/ 1 level "TRANSFER": 1 1 1 1 1 1 1 1 1 1 ...
$ TX_AMOUNT : num 517 198 198 198 198 ...
$ TIMESTAMP : int 0 0 0 0 0 0 0 0 0 0 ...
$ IS_FRAUD : Factor w/ 2 levels "False","True": 1 1 1 1 1 1 1 1 1 1 ...
$ ALERT_ID : int -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 ..
我在执行此部分时遇到错误:现在让我们创建数据集的标准化版本。我们还将我们的数据帧转换为矩阵,因为这是 Keras 所期望的格式。
desc <- df_train %>%
select(-Class) %>%
get_desc()
x_train <- df_train %>%
select(-Class) %>%
normalization_minmax(desc) %>%
as.matrix()
x_test <- df_test %>%
select(-Class) %>%
normalization_minmax(desc) %>%
as.matrix()
我得到错误:
Summary.factor(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, : 'min' 对因子没有意义
我怎么解决这个问题?
解决方案
帖子的兴趣功能是:
get_desc <- function(x) {
map(x, ~list(
min = min(.x),
max = max(.x),
mean = mean(.x),
sd = sd(.x)
))
}
#' Given a dataset and normalization constants it will create a min-max normalized
#' version of the dataset.
normalization_minmax <- function(x, desc) {
map2_dfc(x, desc, ~(.x - .y$min)/(.y$max - .y$min))
}
现在您尝试将其应用于包含factor
. min
并且max
由于明显的原因没有定义一个因素。您的因子 ( TX_TYPE
) 无论如何都是一个常数,因此最简单的方法是从一开始就将其从数据框中删除。如果您有任何需要包含在模型中的因素,则必须对它们进行编码(即将它们转换为数值),参见。例如一种热编码。
df <- df %>% select(-TX_TYPE)
推荐阅读
- javascript - 如何正确地将图像分配给状态和功能?
- c# - 用于处理空字符串的数据注释
- excel - 在 Excel 中优化索引匹配问题的最有效方法
- reactjs - 登录 React 页面显示登录页面只有几分之一秒
- postgresql - How can I retrieve a row by uuid in Postgres database?
- c++ - C++ 中的内存映射流数据
- jquery - 如何判断页面是否一直滚动到一边
- javascript - Magento 2 最后加载 JS
- do-not-disturb - Is there a way to check the status of "do not disturb" setting in iphone or android app?
- c# - Incorrect values during JsonConver.SerializeObject using Newtonsoft.Json