scikit-learn .predict () domyślny próg
Pracuję nad problemem klasyfikacji z niezrównoważonymi klasami (5% 1). Chcę przewidzieć klasę, a nie prawdopodobieństwo.
Czy w przypadku problemu z klasyfikacją binarną domyślną wartością scikit jest
0.5
classifier.predict ()?
Jeśli nie, jaka jest metoda domyślna? Jeśli tak, jak mogę to zmienić?
W scikit niektóre klasyfikatory mają opcję
class_weight = 'auto', ale nie wszystkie mają. Czy przy
class_weight = 'auto'
.predict ()użyje rzeczywistej części populacji jako progu?
Jak byś to zrobił w klasyfikatorze takim jak
MultinomialNB, który nie obsługuje
class_weight? Oprócz korzystania z funkcji
Predict_proba (), a następnie samodzielnego obliczania klas.
Nie znaleziono powiązanych wyników
Zaproszony:
Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się
5 odpowiedzi
Anonimowy użytkownik
Potwierdzenie od:
W klasyfikatorach probabilistycznych tak. Jest to jedyny rozsądny próg z matematycznego punktu widzenia, jak wyjaśnili inni.
Jak byś to zrobił w klasyfikatorze takim jak MultinomialNB, który nie obsługuje ?
Możesz ustawić wartość na , czyli wcześniejsze prawdopodobieństwo P (
y
) dla każdej klasy
y
... To skutecznie przesuwa granice podejmowania decyzji. Na przykład.
Anonimowy użytkownik
Potwierdzenie od:
Anonimowy użytkownik
Potwierdzenie od:
Większość metod ustawiania progów opiera się na
wydajność odbiornika (ROC)
https://en.wikipedia.org/wiki/ ... istic
i
statystyki J.
https://en.wikipedia.org/wiki/ ... istic
Youdena, ale można to również zrobić innymi metodami, takimi jak wyszukiwanie za pomocą algorytmu genetycznego.
Oto artykuł w recenzowanym czasopiśmie opisujący to w medycynie:
http://www.ncbi.nlm.nih.gov/pm ... 15362
http://www.ncbi.nlm.nih.gov/pm ... 5362/
/
O ile wiem, w Pythonie nie ma pakietu do tego, ale znalezienie go za pomocą wyszukiwania brute force w Pythonie jest stosunkowo łatwe (ale nieefektywne).
To jakiś kod R, który to robi.
Anonimowy użytkownik
Potwierdzenie od:
Po pierwsze, nikt nie może odpowiedzieć na twoje pytanie o domyślny próg klasyfikatora scikit, ponieważ nie ma czegoś takiego.
Ważenie drugiej klasy nie jest progiem, jest to zdolność klasyfikatora do radzenia sobie z niezrównoważonymi klasami i jest czymś, co zależy od konkretnego klasyfikatora. Na przykład - w przypadku SVM jest to sposób ważenia słabych zmiennych w problemie optymalizacji lub, jeśli wolisz, górnych granic wartości mnożników Lagrange'a związanych z określonymi klasami. Ustawienie tej wartości na „auto” oznacza użycie domyślnej heurystyki, ale znowu - nie można tego po prostu przełożyć na jakąś wartość progową.
Z drugiej strony naiwny Bayes
bezpośrednio
szacuje prawdopodobieństwo wykonania zajęć ze zbioru uczącego. Nazywa się to „poprzednia klasa” i można ją ustawić w konstruktorze za pomocą zmiennej „class_prior”.
Z dokumentacji:
Prawdopodobieństwa a priori klas. Jeśli zostało to określone, przeory nie są korygowane zgodnie z danymi.
Anonimowy użytkownik
Potwierdzenie od:
df
, podczas
y_prob
może być wynikiem metody .predict_proba (przy założeniu warstwowego podziału pociągu/testu).
Nie krępuj się krytykować/modyfikować. miejmy nadzieję, że pomaga to w rzadkich przypadkach, gdy równoważenie klas nie wchodzi w grę, a sam zbiór danych jest wysoce niezrównoważony.