04 SVM
04 SVM
1 Cel/Zakres
• Klasyfikacja SVM.
• Skalowanie.
• Budowanie potoków.
• Regresja SVM.
• Poszukiwanie wartości hiperparametrów.
data_breast_cancer = datasets.load_breast_cancer(as_frame=False)
print(data_breast_cancer['DESCR'])
.. _breast_cancer_dataset:
:Attribute Information:
- radius (mean of distances from center to points on the perimeter)
- texture (standard deviation of gray-scale values)
- perimeter
- area
- smoothness (local variation in radius lengths)
- compactness (perimeter^2 / area - 1.0)
- concavity (severity of concave portions of the contour)
1
- concave points (number of concave portions of the contour)
- symmetry
- fractal dimension ("coastline approximation" - 1)
The mean, standard error, and "worst" or largest (mean of the three
worst/largest values) of these features were computed for each image,
resulting in 30 features. For instance, field 0 is Mean Radius, field
10 is Radius SE, field 20 is Worst Radius.
- class:
- WDBC-Malignant
- WDBC-Benign
:Summary Statistics:
2
===================================== ====== ======
ftp ftp.cs.wisc.edu
cd math-prog/cpo-dataset/machine-learn/WDBC/
|details-start|
**References**
|details-split|
- W.N. Street, W.H. Wolberg and O.L. Mangasarian. Nuclear feature extraction
for breast tumor diagnosis. IS&T/SPIE 1993 International Symposium on
Electronic Imaging: Science and Technology, volume 1905, pages 861-870,
San Jose, CA, 1993.
- O.L. Mangasarian, W.N. Street and W.H. Wolberg. Breast cancer diagnosis and
3
prognosis via linear programming. Operations Research, 43(4), pages 570-577,
July-August 1995.
- W.H. Wolberg, W.N. Street, and O.L. Mangasarian. Machine learning techniques
to diagnose breast cancer from fine-needle aspirates. Cancer Letters 77 (1994)
163-171.
|details-end|
data_iris = datasets.load_iris()
print(data_iris['DESCR'])
.. _iris_dataset:
:Summary Statistics:
4
:Date: July, 1988
The famous Iris database, first used by Sir R.A. Fisher. The dataset is taken
from Fisher's paper. Note that it's the same as in R, but not as in the UCI
Machine Learning Repository, which has two wrong data points.
|details-start|
**References**
|details-split|
|details-end|
Podpowiedź: funkcje load_... domyślnie zwracają obiekty numpy, ale jeżeli przekażemy im argu-
ment as_frame=True, elementy data oraz target będą strukturami pandas, a dodatkowo dostępny
będzie element frame, ktory zawiera data połączone z target.
3 Klasyfikacja
1. Podziel zbiór danych na uczący i testujący w proporcjach 80/20.
2. Zbuduj modele klasyfikacji SVM dla średnich (mean) wartości cech area oraz smoothness;
stwórz dwa modele:
1. LinearSVC, z funkcją straty “hinge”,
2. LinearSVC, z funkcją straty “hinge”, po uprzednim automatycznym skalowaniu wartości
cech.
3. Policz dokładność (accuracy) dla ww. klasyfikacji osobno na zbiorze uczącym i testują-
5
cym, zapisz wartości na liście w kolejności: zbiór uczący bez skalowania, zbiór testujący
bez skalowania, zbiór uczący ze m, zbiór testujący ze skalowaniem. Listę zapisz w pliku
Pickle bc_acc.pkl.
4 pkt.
4. Czy skalowanie coś dało?
5. Ekperyment powtórz dla zbioru irysów; zbuduj model wykrywający, czy dany przypadek jest
gatunku Virginica na podstawie cech: długość i szerokość płatka.
6. Policz dokładność (accuracy) dla w/w klasyfikacji osobno na zbiorze uczącym i testującym, za-
pisz wartości na liście w kolejności: zbiór uczący bez skalowania, zbiór testujący bez skalowa-
nia, zbiór uczący ze skalowanie, zbiór testujący ze skalowaniem. W.w. listę zapisz w pliku
Pickle iris_acc.pkl.
4 pkt.
7. Czy skalowanie coś dało?
import numpy as np
import pandas as pd
size = 900
X = np.random.rand(size)*5-2.5
w4, w3, w2, w1, w0 = 1, 2, 1, -4, 2
y = w4*(X**4) + w3*(X**3) + w2*(X**2) + w1*X + w0 + np.random.randn(size)*8-4
df = pd.DataFrame({'x': X, 'y': y})
df.plot.scatter(x='x',y='y')
6
2. Podziel zbiór uczący i testowy w proporcji 80:20.
5 Regresja
1. Zbuduj potok rozszerzający cechy do 4 wymiarów, za pomocą wielomianu 4 stopnia oraz
regresora LinearSVR z domyslnymi parametrami.
2. Oblicz MSE dla zbioru uczącego i zbioru testowego. Wyniki powinny być podobne do najlep-
szych rezultatów z ćwiczenia o regresji, lub nawet lepsze.
3. Powtórz uczenie dla regresora SVR z kernelem poly 4 stopnia i pozostałymi parametrami z
wartościami domyslnymi. Wyniki MSE powinny być … rozczarowujące.
4. Jakie hiperparametry użyć żeby SVR miał podobną jakość co LinearSVR? Użyj Grid-
SearchCV na całym zbiorze danych (nie tylko uczącym!). Do znalezienia optymalnej pary
parametrów coef0 oraz C. Jak funkcje oceny zastosuj neg_mean_squared_error. Poszukaj
optymalnych wartości spośród: "C" : [0.1, 1, 10], "coef0" : [0.1, 1, 10].
5. Dla wyliczonych optymalnych wartości hiperparametrów przeprowadź proces uczenia SVR
raz jeszcze. Oblicz wyniki MSE dla zbioru uczącego i testowego.
6. Zapisz wyniki MSE z punktu 2 i 5 na liście (4 elementy), którą następnie zapisz w pliku Pickle
o nazwie: reg_mse.pkl.
4 pkt.
7
6 Prześlij raport
Prześlij plik o nazwie lab04/lab04.py realizujący ww. ćwiczenia.
Sprawdzane będzie, czy skrypt Pythona tworzy wszystkie wymagane pliki oraz czy ich zawartość
jest poprawna.