Obecnie używam Scikit Learn z następującym kodem:
clf = svm.SVC(C=1.0, tol=1e-10, cache_size=600, kernel='rbf', gamma=0.0,
class_weight='auto')
a następnie dopasuj i przewiduj zestaw danych z 7 różnymi etykietami. Mam dziwny wynik. Bez względu na to, jaką technikę walidacji krzyżowej używam przewidywanej etykiety w zestawie walidacyjnym, zawsze będzie to etykieta 7.
Próbuję kilku innych parametrów, w tym pełnego domyślnego ( svm.SVC()
), ale tak długo, jak metoda jądra, której używam, jest rbf
zamiast poly
lub linear
po prostu nie działa, podczas gdy działa naprawdę dobrze dla poly
i linear
.
Poza tym próbowałem już przewidywać dane pociągu zamiast danych sprawdzania poprawności i idealnie pasują.
Czy ktoś już widzi tego rodzaju problem i wie, co się tutaj dzieje?
Nigdy nie patrzę szczegółowo na rozkład zajęć, ale wiem, że powinno to być około 30% z nich to 7, 14% to 4.
Próbuję nawet manualnej implementacji 1-vs-rest i nadal nie jest to pomocne.
źródło
Odpowiedzi:
Program scikit-learn ma ograniczone możliwości wyszukiwania hiperparametrów, ale można go używać razem z biblioteką dostrajania, taką jak Optunity . Przykład na temat dostrajania scikit-learn SVC z Optunity jest dostępny tutaj .
Oświadczenie: Jestem głównym programistą Optunity.
źródło
Problemem okazuje się testowanie parametrów. Nie próbowałem, kiedy
gamma
jest między 0,0 (co jest 1 / n_funkcja) i 1. Na moich danychgamma
należy zwrócić się do czegoś wokół1e-8
źródło