Zadania kontrolne¶
Wygenerować zbiór uczący liniowo separowalny po 25 próbek na klasę w przestrzeni dwuwymiarowej. Przyjąć rozkłady normalne atrybutów z odchyleniem standardowym równym 1, średnie w klasach przyjąć -3 oraz 3. Dane zwizualizować, ocenić czy problem klasyfikacyjny jest liniowo separowalny.
Dokonać uczenia klasyfikatora liniowego dla danych z poprzedniego punktu. Zwizualizować optymalną hiperpłaszczyznę rozdzielającą i podać wzór ją opisujący. Na wykresie zaznaczyć ponadto wektory podpierające
Podać liczbę wektorów podpierających w każdej z klas oraz ich współrzędne. Ograniczyć zbiór uczący jedynie do wektorów podpierających i przeprowadzić ponownie proces uczenia. Czy uzyskane rozwiązanie różni się od tego opartego na całym zbiorze?
Uzyskany klasyfikator przetestować na niezależnym zbiorze testowym 100 elementowym (50 elementów na klasę) wygenerowanym z tego samego rozkładu co zbiór uczący. Podać uzyskane etykiety klasowe oraz sprawność klasyfikatora.
Wykonać następujący skrypt języka Python:
from sklearn.datasets import make_moons, make_circles
data1=make_moons(noise=0.1, random_state=0)
data2=make_circles(noise=0.1, random_state=0)
Sprawdzić liczbę wygenerowanych danych i zilustrować je na wykresie zaznaczając każdą klasę innym kolorem
Zbiory danych z poprzedniego punktu podzielić na część uczącą i testową (po \(50%\))
Dla zbioru data1 dokonać uczenia klasyfikatora svm z jądrem gaussowskim dla kliku wartości parametrów \(gamma\) oraz \(C\). W każdym przypadku podać sprawność klasyfikatora na zbiorze testowym.
Dla wartości parametrów dla których w poprzednim punkcie uzyskano sprawność na najwyższym poziomie zwizualizować powierzchnie decyzujne nauczonego klasyfikatora.
Dla zbioru data2 dokonać uczenia klasyfikatora svm z jądrem wielomianowym dla kliku wartości parametrów stopnia wielomianu \(degree\) oraz stałych coef0 i \(C\). W każdym przypadku podać sprawność klasyfikatora na zbiorze testowym.
Dla wartości parametrów dla których w poprzednim punkcie uzyskano sprawność na najwyższym poziomie zwizualizować powierzchnie decyzujne nauczonego klasyfikatora.
W pakiecie scikit-learn zaimplementowany jest klasyfikator svm dla przypadku wieloklasowego. Znaleźć powierzchnie decyzyjne nieliniowego klasyfikatora SVM z jądrem gaussowskim dla zbioru iris, jako przestrzeń cech przyjąć jedynie wartości 1 i 3 atrybutu. Wartości parametrów dobrać w sposób eksperymentalny.