【问题标题】:Why isn't smote working when trying to create balanced data?为什么在尝试创建平衡数据时 smote 不起作用?
【发布时间】:2021-07-14 15:07:37
【问题描述】:

我正在尝试创建平衡数据并使用 SMOTE 函数。

运行我的代码时:

newData <- SMOTE(number~ ., train, perc.over = 600,perc.under=100)

它给了我这个错误:

SMOTE 中的错误(数字~ ., train, perc.over = 600, perc.under = 100) : 未使用的参数 (perc.over = 600, perc.under = 100)

我的数据:

> head(train, 10)
     number     orderland     direction transmission       group 
1  reference Grossbritannien      RL         AUT             3
2  reference         Belgien      LL         AUT             3
3  reference  B. Deutschland      LL         AUT             3
4  reference         Belgien      LL         AUT             1
5  reference         Schweiz      LL         AUT             2
6  reference         Italien      LL         AUT             3
7  problem    B. Deutschland      LL         AUT             2
8  reference  B. Deutschland      LL         AUT             1
9  reference Grossbritannien      RL         AUT             3
10 reference         Schweiz      LL         AUT             2

我不明白这个错误信息。有什么想法吗?

编辑: 我正在使用 DMwR

【问题讨论】:

  • 看来SMOTE 函数没有perc.overperc.under 参数。您应该真正指定您正在使用哪个包并阅读该功能的文档。
  • 通过快速搜索,有两个包具有此功能。会不会是你用错了?试试 DMwR::SMOTE ...
  • 我首先加载了DMWr包,尝试了SMOTE功能,但不起作用,然后加载了smotefamily包,这也给了我一个错误。
  • 对于 smotefamily 包中的函数,错误是正常的,因为您指定的参数不存在 SMOTE(X, target, K = 5, dup_size = 0) 是我可以从文档中看到的定义。 DMwR 功能应该可以工作。
  • 它对我有用,您是否尝试过重新启动会话?一定要在调用SMOTE之前加载DMwR

标签: r


【解决方案1】:

正如我在其他 post 中提到的,DMwR 已从 CRAN 中删除。为了能够使用来自DMwR(而不是来自smotefamily)的SMOTE 函数,您需要将smote 函数复制到rScript 并运行它。完成此操作后,您将能够使用参数perc.underperc.over

smotefamily 包中的smote 函数具有不同的参数,您可以在此处阅读:

https://cran.r-project.org/web/packages/smotefamily/smotefamily.pdf

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-26
    • 1970-01-01
    • 2023-03-15
    • 2017-10-28
    • 2020-03-19
    • 2016-08-07
    • 2021-06-28
    • 2019-10-05
    相关资源
    最近更新 更多