Комментарии 2
Отличная статья, описаны все важные этапы.
К сожалению, есть ошибка в валидации. Следите за руками:
1. Весь текст пропускается через Tf-iDF vectorizer (это уже должно насторожить, т.к. может приводить к неявному data leak)
vectorizer = TfidfVectorizer(min_df=30)
vect_x = vectorizer.fit_transform(x)
2. Ко всем данными применяется upsampling
nm = NearMiss()
X_res, Y_res = nm.fit_resample(vect_x, y)
3. На полученном наборе данных подбираются гиперпараметры и обучается лучшая модель
xgbc = XGBClassifier()
xgbc.fit(X_res,[j-1 for j in Y_res])
4. Только теперь выделяется тестовая выборка и на ней оценивается качество.
X_train, X_test, y_train, y_test = train_test_split( vect_x, y, random_state=42, test_size=0.3, stratify=y )
pred_y = xgbc.predict(X_test)
Подвох в том, что на этапе 4 в тестовую выборку попадают примеры, которые на этапе 2 участвовали в upsampling и на этапе 3 участвовали в обучении модели. Т.е. качество модели оценивается на части обучающей выборке и соответственно, качество сильно завышено.
Пайплайн для создания классификации текстовой информации