порог классификации в RandomForest-sklearn

9

1) Как я могу изменить порог классификации (я думаю, он равен 0,5 по умолчанию) в RandomForest в sklearn?

2) как я могу пробовать в sklearn?

3) У меня есть следующий результат из классификатора RandomForest: [[1635 1297] [520 3624]]

         precision    recall  f1-score   support

class 0       0.76      0.56      0.64      2932
class 1       0.74      0.87      0.80      4144

в среднем 0,75 0,74 0,73 7076

Во-первых, данные не сбалансированы (30% из класса 0 и 70% из класса 1). Итак, я думаю, что классификатор с большей вероятностью будет смещен для класса 1, что означает перемещение некоторых из класса 0 в класс 1 (для класса 0 существует 1297 ошибок классификации, а для класса 1 - 520). Как я могу это исправить? может ли помочь понижающая выборка? или изменение порога классификации?

Обновление: класс 0 имеет 40% населения, в то время как класс 1 составляет 60%. Тем не менее, дрейф из класса 0 в класс 1 (1297) высок, в то время как я хочу, чтобы он стал низким.

Любитель больших данных
источник

Ответы:

7

Вы действительно можете обернуть ваш случайный лес в класс, predictкоторый вызывает методы, которые вызывают predict_probaметод внутреннего случайного леса и выходной класс 1, только если он выше, чем пользовательский порог.

В качестве альтернативы вы можете сместить алгоритм обучения, передав более высокий sample_weightдля образцов из класса меньшинства.

ogrisel
источник
Спасибо. Я думал об увеличении веса для младшего класса. Тем не менее, я ничего не вижу в классификаторе RandomForest (есть в SGDclassifier)
Big Data Lover
Метод подгонки принимает sample_weightпараметр (один вес на параметр), который очень гибок и позволяет имитировать class_weight(один вес на целевой класс).
Огрисель
Спасибо. когда я использую clf = clf.fit (X, Y, sample_weight = preprocessing.balance_weights (y), это дает мне ValueError: операнды не могут быть переданы вместе с фигурами. y является двоичным 0/1
Big Data Lover
Какова форма y? Почему у тебя разные Yа y?
Огрисель