SMOTE函数“下标不存在”

时间:2018-11-02 15:25:21

标签: r machine-learning oversampling

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

但是,由于我的班级输出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年内没有默认值

1 个答案:

答案 0 :(得分:0)

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