Как выполнить функцию важности в Random Forest в scikit, после того, как я установил модель для повторной выборки данных с помощью SMOTE? - PullRequest
1 голос
/ 09 мая 2019

Я пытаюсь предсказать заболеваемость диабетом у скикитов у питона.Мои данные были крайне несбалансированными, поэтому я пересэмплировал данные с использованием SMOTE на 100%, уравновешивая выборки.Я использую случайный лес для классификации, и я хотел импортировать важность функций после того, как построил модель.Однако наборы данных с передискретизацией теперь находятся в numpy.ndarray, и я не могу видеть результаты важности функций.Пожалуйста помоги!

диабетик (1) = 704 и недиабетик (0) = 4777 в полном наборе данных, я пересэмплировал набор данных, используя SMOTE на 100%, уравновешивая класс меньшинства к большинству класса обучающей выборки, который я нашел лучшимпараметры при поиске по сетке и 5-кратной перекрестной проверке, когда я пытался увидеть важность функции, я получил следующую ошибку:

AttributeError: у объекта 'numpy.ndarray' нет атрибута 'columns'

Итак, я понимаю, что, как только я пересэмплировал данные, они преобразуются в ndarray, но я не знаю, что делать дальше.

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0)

sm = SMOTE(random_state=2)
X_res, y_res = sm.fit_sample(X_train, y_train.ravel())

cl = RandomForestClassifier() 
params = {  
'n_estimators': [100, 300, 500, 800, 1000],
'criterion': ['gini', 'entropy'],
'bootstrap': [True, False],
'max_features': ['auto', 'sqrt', 'log2'],
'max_depth' : [4,5,6,7,8],

}

clf = GridSearchCV(estimator=cl, param_grid=params, cv=5, verbose=0)
bestmodel= clf.fit(X_res, y_res)
cl = RandomForestClassifier(bootstrap=False, criterion='gini', 
max_depth=8, max_features='sqrt', n_estimators= 300) 
forestSMOTE= cl.fit(X_res, y_res)

feature_importances = pd.DataFrame(forestSMOTE.feature_importances_,
                               index = X_res.columns, columns=
                               ['importance']).sort_values('importance', 
                                                           ascending=False)

Если у кого-то есть предложения о том, что нужно сделать, чтобы иметь возможность наносить на карту важные функции, когда я использую сэмплированные наборы, дайте мне знать, ПОЖАЛУЙСТА.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...