【问题标题】:How to solve the wrong variable type error when handling imbalance dataset by ROSE in R?ROSE处理不平衡数据集时如何解决错误的变量类型错误?
【发布时间】:2021-10-06 02:05:08
【问题描述】:

我正在使用Fraud Transaction data 学习 R。当我尝试使用 ROSE 处理不平衡数据集时,弹出only handle continuous and categorical variables 错误。

这是我尝试过的:

str(dataset)
'data.frame':   6362620 obs. of  13 variables:
 $ step            : int  1 1 1 1 1 1 1 1 1 1 ...
 $ type            : chr  "PAYMENT" "PAYMENT" "TRANSFER" "CASH_OUT" ...
 $ amount          : num  9840 1864 181 181 11668 ...
 $ nameOrig        : chr  "C1231006815" "C1666544295" "C1305486145" "C840083671" ...
 $ oldbalanceOrg   : num  170136 21249 181 181 41554 ...
 $ newbalanceOrig  : num  160296 19385 0 0 29886 ...
 $ nameDest        : chr  "M1979787155" "M2044282225" "C553264065" "C38997010" ...
 $ oldbalanceDest  : num  0 0 0 21182 0 ...
 $ newbalanceDest  : num  0 0 0 0 0 ...
 $ isFraud         : int  0 0 1 1 0 0 0 0 0 0 ...
 $ isFlaggedFraud  : int  0 0 0 0 0 0 0 0 0 0 ...
 $ balancedOfOrigin: num  -9840 -1864 -181 -181 -11668 ...
 $ balancedOfDest  : num  0 0 0 21182 0 ...

datadata_ROSE <- ROSE(isFraud~., data = dataset, N = 500, seed = 111)$data

有错误:

rose.sampl 中的错误(n,N,p,ind.majo,majoY,ind.mino, minoY, y, classy, : ROSE 句柄的当前实现 只有连续变量和分类变量。

调试:

# change the isFraud attribute into category 0/1
dataset$isFraud = as.factor(dataset$isFraud)
datadata_ROSE <- ROSE(isFraud~., data = dataset, N = 500, seed = 111)$data

最后还是无法解决错误。如何使数据集适合 ROSE 模型?

【问题讨论】:

    标签: r dataframe imbalanced-data


    【解决方案1】:

    正如您在str 部分中看到的,typenameOrignameDest 仍然是字符而不是因素。它将与将它们更改为因子一起工作。但是当我查看nameOrignameDest时,似乎不适合包含在ROSE中。

    dummy2 <- head(dataset, 100)
    
    dummy2$isFraud = as.factor(dummy2$isFraud)
    
    #additional part.
    dummy2 <- dummy2 %>%
      mutate(type = factor(type),
             nameDest = factor(nameDest),
             nameOrig = factor(nameOrig))
    dummy3 <- ROSE(isFraud~., data = dummy2, N = 500, seed = 111)$data
    

    【讨论】:

    • 感谢您的简短解释!!还有一个问题,我看到很多函数都有参数seed。从文档中,它告诉它跟踪生成的样本。我猜它控制生成数据的随机性?通常我应该设置多大或多小?
    • @WILLIAM seed 是在拟合 ROSE 时修复随机性。您可能会得到恒定的结果,也可以复制给其他人。建议将其修复为您想要的。大或小无所谓。由于您将seed 用作111,因此可以在拟合该模型时保留111
    猜你喜欢
    • 2019-09-16
    • 2020-03-10
    • 2020-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-04
    相关资源
    最近更新 更多