Попытка использовать imblearn.pipeline с RandomOverSampler и DecisionTreeClassifier - PullRequest
0 голосов
/ 20 июня 2020

Я пытаюсь установить гиперпараметры DecisionTreeClassifiers с помощью GridSearchCV, и поскольку мои данные несбалансированы, я пытаюсь использовать imblearn.over_sampling.RandomOverSampler.

from imblearn.over_sampling import RandomOverSampler

dtpass = tree.DecisionTreeClassifier()
pipe1 = Pipeline([('sampling', RandomOverSampler()), ('class', dtpass)])

parameters = {'class__max_depth': range(3,7), 
          'class__ccp_alpha': np.arange(0, 0.001, 0.00025), 
          'class__min_samples_leaf' : [50]
         }

dt2 = GridSearchCV(estimator = pipe1, 
               param_grid = parameters,
               n_jobs = 4,
              scoring = 'roc_auc'
)

dt2.fit(x, y)

Это возвращает ошибку:

AttributeError: 'RandomOverSampler' object has no attribute '_validate_data'

Что я здесь делаю не так?

РЕДАКТИРОВАТЬ: Решение опубликовано ниже

Ответы [ 2 ]

1 голос
/ 20 июня 2020

Попробуйте следующее:

from imblearn.over_sampling import RandomOverSampler
from sklearn.tree import DecisionTreeClassifier
from imblearn.pipeline import make_pipeline
from sklearn.model_selection import GridSearchCV
import numpy as np

dtpass = DecisionTreeClassifier()
sampling=RandomOverSampler()


pipe1=make_pipeline(sampling,dtpass)
# pipe1 = Pipeline([('sampling', RandomOverSampler()), ('class', dtpass)])

parameters = {'class__max_depth': range(3,7), 
          'class__ccp_alpha': np.arange(0, 0.001, 0.00025), 
          'class__min_samples_leaf' : [50]
         }

dt2 = GridSearchCV(estimator = pipe1, 
               param_grid = parameters,
               n_jobs = 4,
              scoring = 'roc_auc'
)

dt2.fit(x, y)
0 голосов
/ 20 июня 2020

Ссылка на страницу решения, на которую потребовалось много поиска в Google:

https://makerspace.aisingapore.org/community/ai4i-5-supervised-learning/encountered-attributeerror-when-run-train_test_splitpreprocessed_data-output_var-after-randomoversampler/

Решение было:

 pip install -U imbalanced-learn

вместо

 conda install -c conda-forge imbalanced-learn
...