Как выполнить перекрестную проверку для несбалансированных наборов данных в sklearn - PullRequest
3 голосов
/ 30 марта 2019

У меня очень несбалансированный набор данных, и я хочу выполнить двоичную классификацию.

При чтении некоторых постов я обнаружил, что sklearn обеспечивает class_weight="balanced" для несбалансированных наборов данных.Итак, мой код классификатора выглядит следующим образом.

clf=RandomForestClassifier(random_state = 42, class_weight="balanced")

Затем я выполнил 10-кратную перекрестную проверку следующим образом, используя приведенный выше классификатор.

k_fold = KFold(n_splits=10, shuffle=True, random_state=42)
new_scores = cross_val_score(clf, X, y, cv=k_fold, n_jobs=1)
print(new_scores.mean())

Однако я не уверен, что class_weight="balanced" отражается через 10-кратную перекрестную проверку.Я делаю это неправильно?Если да, то есть ли лучший способ сделать это в sklearn?

Я с радостью предоставлю более подробную информацию, если это необходимо.

1 Ответ

4 голосов
/ 31 марта 2019

Вместо общей перекрестной проверки вы можете использовать стратифицированную перекрестную проверку.Более конкретно, вы можете использовать StratifiedKFold.вместо KFold в вашем коде.

Это гарантирует, что дисбалансы классов улавливаются всеми потенциальными разделениями поездов и тестов.

...