Letztes Mal Kurs für maschinelles Lernen an der Tsukuba University: Lernen Sie sklearn, während Sie das Python-Skript zu einem Teil der Aufgabe machen. (8) Erstellen Sie Ihre eigene stochastische Methode für den steilsten Abstieg. https://github.com/legacyworld/sklearn-basic
Wir klassifizieren die beiden Chunks, aber das Problem ist in solche mit und ohne Abweichungen unterteilt, die erheblich von den Chunks abweichen.
Der Youtube-Kommentar ist ungefähr 54 Minuten vom 6. (1) Der Scharnierverlust desjenigen ohne Abweichungswert ist tatsächlich der gleiche wie am Beispiel des Scicit-Learn. Es war schwieriger, Matplotlib als den SVM-Teil zu verwenden. Die ursprüngliche Geschichte ist diese https://scikit-learn.org/stable/auto_examples/svm/plot_separating_hyperplane.html#sphx-glr-auto-examples-svm-plot-separating-hyperplane-py Ich habe einen Kommentar für mein eigenes Lernen hinzugefügt.
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
#Erstellen Sie 40 zufällige Klassifizierungsdatensätze. Geben Sie die Anzahl der Blöcke in Zentren an
X, y = make_blobs(n_samples=40, centers=2, random_state=6)
# kernel='linear'Je größer der Scharnierverlust C ist, desto weniger effektiv ist die Regularisierung
clf = svm.SVC(kernel='linear', C=1000)
clf.fit(X, y)
#Klassifizierungsdaten zeichnen. Die Farbe wird durch den cmap-Teil bestimmt.
plt.scatter(X[:, 0], X[:, 1], c=y, s=30, cmap=plt.cm.Paired)
#Entscheidungsgrenze zeichnen
ax = plt.gca()
xlim = ax.get_xlim()
ylim = ax.get_ylim()
#Machen Sie ein 30x30 Gitter
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
#Klassifizierung in jedem Gitter
Z = clf.decision_function(xy).reshape(XX.shape)
#Zeichnen Sie Entscheidungsgrenzen mithilfe der Konturlinienebene=0 entspricht ihm
ax.contour(XX, YY, Z, colors='k', levels=[-1, 0, 1], alpha=0.5,
linestyles=['--', '-', '--'])
#Zeichnen Sie den Stützvektor mit dem kleinsten Rand
ax.scatter(clf.support_vectors_[:, 0], clf.support_vectors_[:, 1], s=100,
linewidth=1, facecolors='none', edgecolors='k')
plt.savefig("5.3.png ")
Es werden tatsächlich nur zwei Zeilen berechnet. Das Ergebnis sieht so aus.
Ich konnte das verstehen, weil das Kommentarvideo einen Quellcode enthielt, aber ohne ihn war es unmöglich.
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
#Erstellen Sie 40 zufällige Klassifizierungsdatensätze. Geben Sie die Anzahl der Blöcke in Zentren an
X, y = make_blobs(n_samples=40, centers=2, random_state=6)
#Der Wert von y-1,Auf 1 setzen
y = y*2-1
#Quadratischer Verlust
clf = linear_model.LinearRegression(fit_intercept=True,normalize=True,copy_X=True)
clf.fit(X, y)
#Klassifizierungsdaten zeichnen. Die Farbe wird durch den cmap-Teil bestimmt.
plt.scatter(X[:, 0], X[:, 1], c=y, s=30, cmap=plt.cm.Paired)
#Entscheidungsgrenze zeichnen
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 ")
Die Idee ist, eine lineare multiple Regression mit $ X $ durchzuführen, die mit make_blobs
als Merkmalsmenge (2 Typen) und $ y $ als Zielmenge erstellt wurde.
In diesem Beispiel beträgt die Anzahl der Feature-Beispiele 40.
In der obigen Grafik ist die horizontale Achse $ x_1 $ und die vertikale Achse ist $ x_2 $.
y = w_0 + w_1\times x_1 + w_2\times x_2
Kann ausgedrückt werden als.
In make_blobs
ist $ y = 0,1 $, aber dies wird durch y = y * 2-1
in $ y = -1,1 $ geändert.
Die Entscheidungsgrenze kann durch Setzen von $ y = 0 $ gezogen werden.
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
Dies ist der letzte Teil des Quellcodes. Das habe ich gezeichnet.
Wenn keine große Abweichung vorliegt, können ähnliche Ergebnisse sowohl mit Scharnierverlust als auch mit Quadratverlust erzielt werden. Wenn es jedoch einen großen Ausreißer gibt, überschätzt der quadratische Verlust den Verlust des Ausreißers, was es unmöglich macht, das richtige Ergebnis zu erhalten. Dies wird beim nächsten Mal erklärt.
Kurs für maschinelles Lernen an der Tsukuba University: Lernen Sie sklearn, während Sie das Python-Skript in die Aufgabe aufnehmen (1) Kurs für maschinelles Lernen an der Tsukuba University: Lernen Sie sklearn, während Sie das Python-Skript in die Aufgabe aufnehmen (2) Kurs für maschinelles Lernen an der Tsukuba University: Lernen Sie sklearn, während Sie das Python-Skript in die Aufgabe aufnehmen (3) Kurs für maschinelles Lernen an der Tsukuba University: Lernen Sie sklearn, während Sie das Python-Skript in die Aufgabe aufnehmen (4) Kurs für maschinelles Lernen an der Tsukuba University: Lernen Sie sklearn, während Sie das Python-Skript in die Aufgabe aufnehmen (5) Kurs für maschinelles Lernen an der Tsukuba University: Lernen Sie sklearn, während Sie das Python-Skript in die Aufgabe aufnehmen (6) Kurs für maschinelles Lernen an der Tsukuba University: Lernen Sie sklearn, während Sie das Python-Skript zu einem Teil der Aufgabe machen (7) Erstellen Sie Ihre eigene Methode für den steilsten Abstieg https://github.com/legacyworld/sklearn-basic https://ocw.tsukuba.ac.jp/course/systeminformation/machine_learning/
Recommended Posts