Obecnie staram się zrozumieć, w jaki sposób działają algorytmy uczenia maszynowego, a jedną rzeczą, której naprawdę nie rozumiem, jest oczywista różnica między dokładnością obliczoną przewidywanych etykiet a macierzą wizualnego pomyłki. Postaram się wyjaśnić tak jasno, jak to tylko możliwe.Python - uczenie maszynowe
Oto fragment zbioru danych (tutaj można zobaczyć 9 próbek (około 4k w rzeczywistym zbiorze), 6 funkcji i 9 etykiet (które stoją na nie liczb, ale niektóre znaczenia i nie można porównać jak 7> 4> 1)):
f1 f2 f3 f4 f5 f6 label
89.18 0.412 9.1 24.17 2.4 1 1
90.1 0.519 14.3 16.555 3.2 1 2
83.42 0.537 13.3 14.93 3.4 1 3
64.82 0.68 9.1 8.97 4.5 2 4
34.53 0.703 4.9 8.22 3.5 2 5
87.19 1.045 4.7 5.32 5.4 2 6
43.23 0.699 14.9 12.375 4.0 2 7
43.29 0.702 7.3 6.705 4.0 2 8
20.498 1.505 1.321 6.4785 3.8 2 9
na korzyść ciekawości próbuje liczbę algorytmów (liniowego, Gaussa SVM (SVC SVR) Bayesa itd.). O ile rozumiem instrukcję, w moim przypadku lepiej jest pracować z klasyfikatorami (dyskretnymi) niż regresyjnie (ciągłe). Korzystanie często:
model.fit(X_train, y_train)
model.score(X_test, y_test)
mam:
Lin_Reg: 0.855793988736
Log_Reg: 0.463251670379
DTC: 0.400890868597
KNC: 0.41425389755
LDA: 0.550111358575
Gaus_NB: 0.391982182628
Bay_Rid: 0.855698151574
SVC: 0.483296213808
SVR: 0.647914795849
Ciągłe algorytmy zrobił lepsze wyniki. Kiedy użyłem macierzy dezorientacji Bayesa Ridge (musiał przekonwertować pływaka do liczb całkowitych), aby zweryfikować swój wynik, mam następujące:
Pred l1 l2 l3 l4 l5 l6 l7 l8 l9
True
l1 23, 66, 0, 0, 0, 0, 0, 0, 0
l2 31, 57 1, 0, 0, 0, 0, 0, 0
l3 13, 85, 19 0, 0, 0, 0, 0, 0
l4 0, 0, 0, 0 1, 6, 0, 0, 0
l5 0, 0, 0, 4, 8 7, 0, 0, 0
l6 0, 0, 0, 1, 27, 36 7, 0, 0
l7 0, 0, 0, 0, 2, 15, 0 0, 0
l8 0, 0, 0, 1, 1, 30, 8, 0 0
l9 0, 0, 0, 1, 0, 9, 1, 0, 0
Co dał mi zrozumienie, że dokładność 85% jest źle. Jak to wyjaśnić? Czy to dlatego, że konwersja float/int?
Byłby wdzięczny za jakiekolwiek bezpośrednie odpowiedzi/link itp
Jak dokładnie obliczyłeś dokładność? Coś jak 'sklearn.metrics.accuracy_score (y_test, model.predict (X_test))'? – sietschie
Jeśli ręcznie porównasz wyniki 'model.predict()' z etykietami, licząc ile wpisów jest równych, powinieneś się zorientować, czy obliczona dokładność lub matryca nieporozumień jest błędna. (lub jeśli oba są wyłączone) – sietschie
@sietschie Przepraszamy za spóźnioną odpowiedź! Użyłem "model.score (X_test, y_test)". Tak, widzę, że jeden z nich jest zły i przypuszczam, że dokładność obliczona jest tą jedyną. – Moveton