Cours d'apprentissage automatique à l'Université de Tsukuba: Étudiez sklearn tout en intégrant le script Python à la tâche (9)

Dernière fois Cours d'apprentissage automatique à l'Université de Tsukuba: Étudiez sklearn tout en intégrant le script Python à la tâche (8) Créez votre propre méthode de descente stochastique la plus raide https://github.com/legacyworld/sklearn-basic

Défi 5.3 Perte de charnière et perte de carré

Nous classons les deux morceaux, mais le problème est divisé en ceux avec et sans écarts qui s'écartent considérablement des morceaux.

Perte de charnière sans valeurs aberrantes

Le commentaire Youtube est d'environ 54 minutes du 6ème (1) La perte de charnière de celui sans valeur de déviation est en fait la même que l'exemple de scicit-learn. Il était plus difficile d'utiliser matplotlib que la partie SVM. L'histoire originale est celle-ci https://scikit-learn.org/stable/auto_examples/svm/plot_separating_hyperplane.html#sphx-glr-auto-examples-svm-plot-separating-hyperplane-py J'ai ajouté un commentaire pour mon propre apprentissage.

python:Homework_5.3_hinge_no_outlier.py


import numpy as np
import matplotlib.pyplot as plt
from sklearn import svm
from sklearn.datasets import make_blobs

#Créer 40 jeux de données de classification aléatoires Spécifier le nombre de blocs dans les centres
X, y = make_blobs(n_samples=40, centers=2, random_state=6)
# kernel='linear'Plus la perte de charnière C est importante, moins la régularisation est efficace
clf = svm.SVC(kernel='linear', C=1000)
clf.fit(X, y)
#Dessinez des données de classification. La couleur est décidée par la partie cmap.
plt.scatter(X[:, 0], X[:, 1], c=y, s=30, cmap=plt.cm.Paired)

#Tracer la frontière de décision
ax = plt.gca()
xlim = ax.get_xlim()
ylim = ax.get_ylim()

#Faire une grille 30x30
xx = np.linspace(xlim[0], xlim[1], 30)
yy = np.linspace(ylim[0], ylim[1], 30)
YY, XX = np.meshgrid(yy, xx)
xy = np.vstack([XX.ravel(), YY.ravel()]).T
#Classification dans chaque réseau
Z = clf.decision_function(xy).reshape(XX.shape)

#Tracer des limites de décision à l'aide du niveau des lignes de contour=0 lui correspond
ax.contour(XX, YY, Z, colors='k', levels=[-1, 0, 1], alpha=0.5,
           linestyles=['--', '-', '--'])
#Dessinez le vecteur de support avec la plus petite marge
ax.scatter(clf.support_vectors_[:, 0], clf.support_vectors_[:, 1], s=100,
           linewidth=1, facecolors='none', edgecolors='k')
plt.savefig("5.3.png ")

Seules deux lignes sont réellement calculées. Le résultat ressemble à ceci. 5.3.png

Perte carrée sans valeurs aberrantes

Je pouvais comprendre cela parce qu'il y avait un code source dans la vidéo de commentaire, mais c'était impossible sans lui.

python:Homework_5.3_square_no_outlier.py


import numpy as np
import matplotlib.pyplot as plt
from sklearn import linear_model
from sklearn.datasets import make_blobs

#Créer 40 jeux de données de classification aléatoires Spécifier le nombre de blocs dans les centres
X, y = make_blobs(n_samples=40, centers=2, random_state=6)
#La valeur de y-1,Définir sur 1
y = y*2-1
#Perte carrée
clf = linear_model.LinearRegression(fit_intercept=True,normalize=True,copy_X=True)
clf.fit(X, y)
#Dessinez des données de classification. La couleur est décidée par la partie cmap.
plt.scatter(X[:, 0], X[:, 1], c=y, s=30, cmap=plt.cm.Paired)

#Tracer la frontière de décision
x_plot = np.linspace(4,10,100)
w = [clf.intercept_,clf.coef_[0],clf.coef_[1]]
y_plot = -(w[1]/w[2]) * x_plot - w[0]/w[2]
plt.plot(x_plot,y_plot)
plt.savefig("5.3.png ")

L'idée est d'effectuer une régression multiple linéaire avec $ X $ créé avec make_blobs comme quantité de caractéristiques (2 types) et $ y $ comme quantité cible. Dans cet exemple, le nombre d'échantillons de caractéristiques est de 40. Dans le graphique ci-dessus, l'axe horizontal est $ x_1 $ et l'axe vertical est $ x_2 $.

y = w_0 + w_1\times x_1 + w_2\times x_2

Peut être exprimé comme. Dans make_blobs, $ y = 0,1 $, mais cela est changé en $ y = -1,1 $ par y = y * 2-1. La frontière de décision peut être dessinée en définissant $ y = 0 $.

0 = w_0 + w_1\times x_1 + w_2\times x_2 \\
x_2 = -\frac{w_0}{w_2} - \frac{w_1}{w_2}x_1

Ceci est la dernière partie du code source. C'est ce que j'ai dessiné. 5.3.png

Intention de ce problème

S'il n'y a pas d'écart important, des résultats similaires peuvent être obtenus avec à la fois une perte de charnière et une perte de carré. Cependant, lorsqu'il existe une valeur aberrante importante, la perte carrée surestime la perte de la valeur aberrante, ce qui rend impossible l'obtention du résultat correct. Cela sera expliqué la prochaine fois.

Messages passés

Cours d'apprentissage automatique à l'Université de Tsukuba: étudier sklearn tout en intégrant le script Python au devoir (1) Cours d'apprentissage automatique à l'Université de Tsukuba: étudier sklearn tout en intégrant le script Python au devoir (2) Cours d'apprentissage automatique à l'Université de Tsukuba: étudier sklearn tout en intégrant le script Python au devoir (3) Cours d'apprentissage automatique à l'Université de Tsukuba: étudier sklearn tout en intégrant le script Python au devoir (4) Cours d'apprentissage automatique à l'Université de Tsukuba: étudier sklearn tout en intégrant le script Python au devoir (5) Cours d'apprentissage automatique à l'Université de Tsukuba: étudier sklearn tout en intégrant le script Python au devoir (6) Cours d'apprentissage automatique à l'Université de Tsukuba: Étudiez sklearn tout en intégrant le script Python à la tâche (7) Créez votre propre méthode de descente la plus raide https://github.com/legacyworld/sklearn-basic https://ocw.tsukuba.ac.jp/course/systeminformation/machine_learning/

Recommended Posts

Cours d'apprentissage automatique à l'Université de Tsukuba: Étudiez sklearn tout en intégrant le script Python à la tâche (17)
Cours d'apprentissage automatique à l'Université de Tsukuba: Étudiez sklearn tout en créant le script Python faisant partie du devoir (5)
Cours d'apprentissage automatique à l'Université de Tsukuba: Étudiez sklearn tout en intégrant le script Python à la tâche (16)
Cours d'apprentissage automatique à l'Université de Tsukuba: Étudiez sklearn tout en intégrant le script Python à la tâche (10)
Cours d'apprentissage automatique à l'Université de Tsukuba: étudier sklearn tout en intégrant le script Python à la tâche (2)
Cours d'apprentissage automatique à l'Université de Tsukuba: Étudiez sklearn tout en intégrant le script Python à la tâche (9)
Cours d'apprentissage automatique à l'Université de Tsukuba: Étudiez sklearn tout en intégrant le script Python à la tâche (4)
Cours d'apprentissage automatique à l'Université de Tsukuba: Étudiez sklearn tout en intégrant le script Python à la tâche (12)
Cours d'apprentissage automatique à l'Université de Tsukuba: Étudiez sklearn tout en intégrant le script Python à la tâche (1)
Cours d'apprentissage automatique à l'Université de Tsukuba: Étudiez sklearn tout en intégrant le script Python à la tâche (11)
Cours d'apprentissage automatique à l'Université de Tsukuba: Étudiez sklearn tout en intégrant le script Python à la tâche (3)
Cours d'apprentissage automatique à l'Université de Tsukuba: étudier sklearn tout en intégrant le script Python à la tâche (14)
Cours d'apprentissage automatique à l'Université de Tsukuba: Étudiez sklearn tout en créant le script Python faisant partie du devoir (6)
Cours d'apprentissage automatique à l'Université de Tsukuba: Étudiez sklearn tout en intégrant le script Python à la tâche (15)
Cours d'apprentissage automatique à l'Université de Tsukuba: Étudiez sklearn tout en intégrant le script Python à la tâche (7) Créez votre propre méthode de descente la plus raide
Cours d'apprentissage automatique à l'Université de Tsukuba: Étudiez sklearn tout en intégrant le script Python à la tâche (8) Créez votre propre méthode de descente stochastique la plus raide
Mémo d'étude Python & Machine Learning ⑤: Classification d'Ayame
Mémo d'étude Python & Machine Learning ②: Introduction de la bibliothèque
Script Python de collection d'images pour créer des ensembles de données pour l'apprentissage automatique
Résumé du flux de base de l'apprentissage automatique avec Python
Le résultat de l'apprentissage automatique des ingénieurs Java avec Python www
[Livre d'images sur l'apprentissage automatique] Mémo lorsque l'exercice Python à la fin du livre a été effectué lors de la vérification des données
Mémo d'apprentissage Python pour l'apprentissage automatique par Chainer jusqu'à la fin du chapitre 2
Mémo d'étude Python & Machine Learning: Préparation de l'environnement
Notes d'apprentissage depuis le début de Python 1
J'ai installé Python 3.5.1 pour étudier l'apprentissage automatique
Cours de base Python (à la fin de 15)
Mémo d'étude Python & Machine Learning ③: Réseau neuronal
Mémo d'étude Python & Machine Learning ④: Machine Learning par rétro-propagation
Notes d'apprentissage depuis le début de Python 2
Mémo d'étude Python & Machine Learning ⑥: Reconnaissance des nombres
Alignez le nombre d'échantillons entre les classes de données pour l'apprentissage automatique avec Python
Mémo d'apprentissage automatique d'un ingénieur débutant Partie 1
[Python] Lire le code source de Bottle Part 2
Classification des images de guitare par apprentissage automatique Partie 1
L'histoire selon laquelle le coût d'apprentissage de Python est faible
Mathématiques Todai 2016 résolues avec Python
EV3 x Python Machine Learning Partie 2 Régression linéaire
[Python] Lire le code source de Bottle Part 1
À propos du contenu de développement de l'apprentissage automatique (exemple)
Mémo d'apprentissage automatique d'un ingénieur débutant Partie 2
Classification des images de guitare par apprentissage automatique, partie 2
Touchons une partie de l'apprentissage automatique avec Python
Mémo d'étude Python & Machine Learning ⑦: Prévision du cours de l'action
[Python + OpenCV] Peignez la partie transparente de l'image en blanc
Prédire le temps objectif d'un marathon complet avec l'apprentissage automatique-③: j'ai essayé de visualiser les données avec Python-
La première étape de l'apprentissage automatique ~ Pour ceux qui veulent essayer l'implémentation avec python ~
[CodeIQ] J'ai écrit la distribution de probabilité des dés (du cours de mathématiques CodeIQ pour l'apprentissage automatique [Distribution de probabilités])