У меня несбалансированный набор данных, и я уже использовал SMOTE .
Теперь я хочу сделать то же самое, просто используя ADASYN из пакета smotefamily
.В документах говорится, что ADASYN нуждается в качестве ввода фрейма данных или матрицы числового атрибутивного набора данных, но мои данные не являются числовыми.
Usage
ADAS(X,target,K=5)
Arguments
X: A data frame or matrix of numeric-attributed dataset
target: A vector of a target class attribute corresponding to a dataset X.
K: The number of nearest neighbors during sampling process
Значение train$case == "problem"
должно быть превышено.Как я могу это сделать?
Вот мои данные:
> head(train)
case land steering type group
1 reference Asia LL AUT 1
2 reference Asia LL AUT 3
3 reference Asia LL AUT 9
4 reference Asia LL AUT 9
5 problem Asia LL AUT 3
6 reference Asia LL AUT 8
> str(train)
'data.frame': 16402 obs. of 5 variables:
$ case: Factor w/ 2 levels "problem",..: 2 2 2 2 2 2 2 2 2 2 ...
$ land : Factor w/ 9 levels "Africa","LatinAmerica",..: 3 3 3 3 3 3 3 3 3 3 ...
$ steering: Factor w/ 1 level "LL": 1 1 1 1 1 1 1 1 1 1 ...
$ type: Factor w/ 1 level "AUT": 1 1 1 1 1 1 1 1 1 1 ...
$ group: Factor w/ 9 levels "1","2","3","4",..: 1 3 9 9 3 8 7 2 4 9 ...
Код с SMOTE :
smote_train <- SMOTE(case~ ., train, perc.over = 300,perc.under=100, k =5)