1.4 Miary oceny jakości klasyfikacji
Narzędzia do oceny jakości (czy też ewaluacji) klasyfikacji znajdują się w module metrics
pakietu sklearn
. Zaimportujmy go do skryptu.
Po poprawnym przeprowadzeniu klasyfikacji na zbiorze testowym uzyskaliśmy wektor predykcji (prediction
). Na etapie podziału, od tego samego zbioru, oddzieliliśmy również wektor oryginalnych etykiet (y_test
).
Dla oryginalnego zbioru etykiet czasami stosuje się również nazwę ground truth. Nie w każdym przypadku jest to poprawne określenie, ale jego stosowanie nie jest naganne. A zawsze brzmi niemal jak byśmy wiedzieli o czym mówimy.
Ocena jakości klasyfikacji polega na odpowiednim porównaniu ze sobą tych dwóch wektorów. Podstatowym narzędziem takiej oceny jest tak zwana macierz pomyłek (confussion matrics). Wyliczmy ją dla naszej pary porównawczej.
Dane zapisane po przekątnej macierzy pomyłek (tej, w której indeks wiersza i kolumny jest równy) informują o wzorcach poprawnie przypisanych do swoich klas. Pozostałe komórki macierzy oznaczają poszczególne błędy przypisania.
Najprostszą i jednocześnie najbardziej powszechnie stosowaną miarą jakości klasyfikacji (do której na tę chwilę się ograniczymy) jest jej dokładność, czyli stosunek sumy wartości znajdujących się na przekątnej macierzy pomyłek do sumy wszystkich wartości macierzy. Możemy uzyskać ją używając funkcji accuracy_score()
.
Zgodnie z literaturą, miarą bardziej poprawną od jakości klasyfikacji, jest jej błąd. Wynosi on dokładnie
1 - dokładność
.
W większości eksperymentów nie będziemy stosować prostego podziału zbioru, a k-foldowej walidacji krzyżowej. W takim wypadku uzyskamy k
wartości wybranej przez nas miary jakości. Dokonując pomiarów, na poczet późniejszych testów statystycznych powinniśmy zapisywać wszystkie k
wyliczonych miar.
Deklarujemy parametr
k
, przyjmując dla niego wartość10
podziałów. Inicjalizujemy obiekt podziału w zmiennejcv
. Inicjalizujemy pustą listęaccuracies
, w której będziemy składować kolejne wyliczone dokładności. Następnie iterujemy obiekt podziału, przy każdej pętli uzyskując krotkę(train,test)
. Musimy pamiętać, że zwraca ona nie podzielone obiekty, a jedynie ich indeksy. W związku z tym do kolejnych zmiennych przypisujemy już odpowiednie podzbiory tablicX
iy
. Po podziale uczymy klasyfikator (fit
), wyliczamy wektory wsparć (predict_proba
), wyliczamy i tłumaczymy predykcję i wyliczamy dokładność (accuracy
). Na koniec, na koniec listyaccuracies
dodajemy wyliczoną dokładność. Serwować podgrzane.
Podając wynik klasyfikacji, nie chwalimy się całym wektorem dokładności, a prezentujemy jego uśrednioną dokładność i jej odchylenie standardowe.
Last updated