Я пытаюсь создать новые данные, чтобы получить сбалансированный набор поездов для классификации с деревом решений.При использовании функции SMOTE всегда возникает одна и та же ошибка:
Ошибка в именах (dn) <- dnn: попытка установить атрибут в NULL. Дополнительно: Предупреждениесообщение: В именах (данных) == as.character (форма [[2]]): длинная длина объекта не кратна короткой длине объекта </p>
Я преобразовал все в множитель с помощью as.factor()
и удалил АН:
train <- na.omit(train)
> str(train)
Classes ‘tbl_df’, ‘tbl’ and 'data.frame': 11526 obs. of 5 variables:
$ number: Factor w/ 2 levels "problem",..: 2 2 2 2 2 2 2 2 2 2 ...
$ Land: Factor w/ 29 levels "Australien","Belgien",..: 3 3 3 3 3 3 3 3 9 3 ...
$ direction: Factor w/ 2 levels "LL","RL": 1 1 1 1 1 1 1 1 2 1 ...
$ transmission: Factor w/ 2 levels "AUT","SCH": 1 1 1 1 1 1 1 1 1 1 ...
$ range: Factor w/ 4 levels "1","2","3","4": 3 3 3 2 1 3 2 4 3 2 ...
- attr(*, "na.action")= 'omit' Named int 6500 9748
..- attr(*, "names")= chr "6500" "9748"
Голова моего поезда выглядит так:
> head(train,10)
number Land direction transmission range
1 reference Bundesrep. Deutschland LL AUT 3
2 reference Bundesrep. Deutschland LL AUT 3
3 reference Bundesrep. Deutschland LL AUT 3
4 reference Bundesrep. Deutschland LL AUT 2
5 reference Bundesrep. Deutschland LL AUT 1
6 reference Bundesrep. Deutschland LL AUT 3
7 reference Bundesrep. Deutschland LL AUT 2
8 problem Taiwan LL AUT 3
9 reference Bundesrep. Deutschland LL AUT 4
10 reference Grossbritannien RL AUT 3
11 reference Bundesrep. Deutschland LL SCH 2
А это мой код:
library(DMWr)
smote_train <- SMOTE(train$number ~ ., data = train, perc.over=500, k =5)