SMOTE 函数'下标脱离键'

Posted

技术标签:

【中文标题】SMOTE 函数\'下标脱离键\'【英文标题】:SMOTE function 'subscript out of bond'SMOTE 函数'下标脱离键' 【发布时间】:2019-04-06 20:46:49 【问题描述】:

我正在尝试如下实现逻辑回归:

但是我无法得到好的预测,因为我的类输出 1 在我的数据中的代表性不足。 因此,我试图将 SMOTE 算法应用于我的训练集以获得更好的结果。 但是我收到消息错误:

Error in T[i, ] : subscript out of bounds

这是我的代码:

set.seed(157)
split <- createDataPartition(df_statique$Y, p = .50,list = FALSE,times = 1)
trainSplit <- df_statique[ split,]
testSplit <- df_statique[-split,]
trainSplit <- SMOTE(Y ~ insolvency + efficiency +  DebtToAssetsRatio  + taille  + CashAssetRatio    + current + netWorth + REA, trainSplit, perc.over = 300, perc.under=100)

我的数据框 df_statique 有一部分:

index  countryIsoCode insolvency efficiency CashAssetRatio DebtToAssetsRatio netWorth     REA      taille Y
41807             IT    0.00360  0.5193711      0.8686575        0.49446355   4387182 1.657145e-03      2 1
41808             IT    0.00050  1.5269309      1.6295765        0.36543122  30916838 6.601092e-03      3 0
41809             IT    0.00050  2.2635592      1.3427063        0.15809120   2200087 1.218576e-03      1 0
41810             IT    0.00280  1.3989753      0.9345793        0.69642554   2940473 3.852093e-04      2 0
41811             IT    0.00140  2.1440221      3.5781748        0.07951644  28418622 8.845920e-04      2 0
41812             IT    0.00040  1.0068491      1.7238305        0.47561418  22486133 2.703242e-04      2 0
41813             IT    0.00130  1.5569114      1.4459704        0.57632716   9769040 9.741611e-04      2 0
41814             IT    0.00510  5.0143711      0.1035034        0.71267895   3610152 2.391447e-03      2 0
41815             IT    0.00090  3.3280521      0.5160867        0.34998732 218965703 2.550272e-04      3 0
41816             IT    0.00040  1.7217051      2.2758391        0.29638050  29868519 1.136387e-04      3 0
41817             IT    0.00360  1.7261580      0.8490392        0.41231551 106020226 2.304773e-06      3 0
41818             IT    0.00040  1.3600893      1.6298656        0.57789518  55408765 4.841743e-04      3 1
41819             IT    0.00510  5.5565821      0.1376145        0.19679467   9491245 1.398124e-03      2 0
41820             IT    0.00131  3.8312347      1.1365521        0.73639696   8921497 4.701300e-06      3 0
41821             IT    0.00400  1.8218620      0.9113375        0.62646234  24134486 9.435248e-04      3 0
41822             IT    0.00100  1.8215702      1.0690901        0.82764828    777547 6.335832e-03      2 0
41823             IT    0.00090  1.8153513      0.9320536        0.80258849   2437903 6.035954e-04      2 0
41824             IT    0.00050  2.1300765      1.7388457        0.31394248  27009000 3.507500e-04      3 0
41825             IT    0.00100  1.8697385      1.4438289        0.56198890     35917 5.765082e-03      1 0
41826             IT    0.00230  6.5298138      1.1726536        0.56654516   2675415 1.038839e-02      2 0
41827             IT    0.00220  9.8201528      0.4794298        0.63618554    488924 1.336866e-05      2 0

最后,我的输出 Y 是一个虚拟变量,表示默认或不在 1 年

【问题讨论】:

我找到了答案:输出变量必须是一个因子,而我的是一个 int。一个简单的 as.factor(trainSplit$Y) 效果很好 【参考方案1】:

当您用于 SMOTE 函数的目标变量是 INT 数据类型时,会发生此错误。 SMOTE 只能与因子目标变量一起使用。

【讨论】:

以上是关于SMOTE 函数'下标脱离键'的主要内容,如果未能解决你的问题,请参考以下文章

SMOTE函数在make_pipeline中不起作用

非平衡数据的处理(SMOTE算法)

numpy数组的排序,搜索,元素抽取

数据结构-Hash

Android 逆向ptrace 函数 ( ptrace 函数族 | 进程附着 | 进程脱离 | 进程数据读写权限 | 进程对应的主线程寄存器读写 | 单步调试 |ptrace 函数族状态转换 )(代

PHP中array_merge()函数与array+arrayarray_merge_recursive() 的区别