Kurs für maschinelles Lernen an der Tsukuba-Universität: Lernen Sie sklearn, während Sie das Python-Skript zu einem Teil der Aufgabe machen (4).

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) https://github.com/legacyworld/sklearn-basic

Aufgabe 3.4 Regularisierung der einfachen Polynomregression

Übrigens ist diesmal Gratrückkehr. Es scheint keine Erklärung für Youtube zu geben, aber einige Ergebnisse liegen im 4. (1) bei 9 Minuten und 45 Sekunden. Der Quellcode ist fast der gleiche wie in Aufgabe 3.2. In dieser Aufgabe ist die Reihenfolge auf 30 festgelegt. Verschieben Sie stattdessen den Regularisierungsparameter mit "[1e-30,1e-20,1e-10,1e-5, 1e-3,1e-2,1e-1, 1,10,100]". Im Quellcode lautet der Regularisierungsparameter "alpha". Weil Pythons "Lambda" reserviert ist.

python:Homework_3.4.py


import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.preprocessing import PolynomialFeatures as PF
from sklearn import linear_model
from sklearn.pipeline import Pipeline
from sklearn.metrics import mean_squared_error
from sklearn.model_selection import cross_val_score

DEGREE = 30

def true_f(x):
    return np.cos(1.5 * x * np.pi)

np.random.seed(0)
n_samples = 30

#X-Achsdaten zum Zeichnen
x_plot = np.linspace(0,1,100)
#Trainingsdaten
x_tr = np.sort(np.random.rand(n_samples))
y_tr = true_f(x_tr) + np.random.randn(n_samples) * 0.1
#In Matrix konvertieren
X_tr = x_tr.reshape(-1,1)
X_plot = x_plot.reshape(-1,1)
degree = DEGREE
alpha_list = [1e-30,1e-20,1e-10,1e-5, 1e-3,1e-2,1e-1, 1,10,100]
for alpha in alpha_list:
    plt.scatter(x_tr,y_tr,label="Training Samples")
    plt.plot(x_plot,true_f(x_plot),label="True")
    plt.xlim(0,1)
    plt.ylim(-2,2)
    filename = f"{alpha}.png "
    pf = PF(degree=degree,include_bias=False)
    linear_reg = linear_model.Ridge(alpha=alpha)
    steps = [("Polynomial_Features",pf),("Linear_Regression",linear_reg)]
    pipeline = Pipeline(steps=steps)
    pipeline.fit(X_tr,y_tr)
    plt.plot(x_plot,pipeline.predict(X_plot),label="Model")
    y_predict = pipeline.predict(X_tr)
    mse = mean_squared_error(y_tr,y_predict)
    scores = cross_val_score(pipeline,X_tr,y_tr,scoring="neg_mean_squared_error",cv=10)
    plt.title(f"Degree: {degree}, Lambda: {alpha}\nTrainErr: {mse:.2e} TestErr: {-scores.mean():.2e}(+/- {scores.std():.2e})")
    plt.legend()
    plt.savefig(filename)
    plt.clf()
    print(f"Regularisierungsparameter= {alpha},Trainingsfehler= {mse},Testfehler= {-scores.mean():.2e}")

Was ändert sich?

linear_reg = linear_model.Ridge(alpha=alpha)

Nur. Wenn ich dieses Programm starte, erhalte ich die folgende Warnung.

/usr/local/lib64/python3.6/site-packages/sklearn/linear_model/_ridge.py:190: UserWarning: Singular matrix in solving dual problem. Using least-squares solution instead.
  warnings.warn("Singular matrix in solving dual problem. Using "

Dies scheint anstelle der Kolesky-Demontage herauszukommen, aber ich war mir nicht sicher.

linear_model/ridge.py


try:
   # Note: we must use overwrite_a=False in order to be able to
   #       use the fall-back solution below in case a LinAlgError
   #       is raised
   dual_coef = linalg.solve(K, y, sym_pos=True,overwrite_a=False)
except np.linalg.LinAlgError:
   warnings.warn("Singular matrix in solving dual problem. Using "
   "least-squares solution instead.")
   dual_coef = linalg.lstsq(K, y)[0]

Es scheint, dass die simultanen Gleichungen nicht gelöst werden können, daher wird die Methode der minimalen Quadrate verwendet ... Ich habe den Grund nicht verstanden, warum es nur mit "1e-30,1e-20" herauskam.

Ausführungsergebnis

Regularisierungsparameter= 1e-30,Trainingsfehler= 0.002139325105436034,Testfehler= 5.11e+02
Regularisierungsparameter= 1e-20,Trainingsfehler= 0.004936191193133389,Testfehler= 5.11e+02
Regularisierungsparameter= 1e-10,Trainingsfehler= 0.009762751388489265,Testfehler= 1.44e+02
Regularisierungsparameter= 1e-05,Trainingsfehler= 0.01059565315043209,Testfehler= 2.79e-01
Regularisierungsparameter= 0.001,Trainingsfehler= 0.010856091742299396,Testfehler= 6.89e-02
Regularisierungsparameter= 0.01,Trainingsfehler= 0.012046102850453813,Testfehler= 7.79e-02
Regularisierungsparameter= 0.1,Trainingsfehler= 0.02351033489834412,Testfehler= 4.94e-02
Regularisierungsparameter= 1,Trainingsfehler= 0.11886509938269865,Testfehler= 2.26e-01
Regularisierungsparameter= 10,Trainingsfehler= 0.31077333649742883,Testfehler= 4.71e-01
Regularisierungsparameter= 100,Trainingsfehler= 0.41104732329314453,Testfehler= 5.20e-01

Wenn die Regularisierung zu effektiv ist, wird nur der Durchschnitt genommen, und wenn sie nicht effektiv ist, wird sie überlernt. Daher ist selbst bei der Gratregression eine Kreuzverifizierung erforderlich, um die Regularisierungsparameter abzustimmen.

Recommended Posts

Kurs für maschinelles Lernen an der Tsukuba-Universität: Lernen Sie sklearn, während Sie das Python-Skript zu einem Teil der Aufgabe machen (17).
Kurs für maschinelles Lernen an der Tsukuba-Universität: Lernen Sie sklearn, während Sie das Python-Skript zu einem Teil der Aufgabe machen (5).
Kurs für maschinelles Lernen an der Tsukuba-Universität: Lernen Sie sklearn, während Sie das Python-Skript zu einem Teil der Aufgabe machen (16).
Kurs für maschinelles Lernen an der Tsukuba University: Lernen Sie sklearn, während Sie das Python-Skript zu einem Teil der Aufgabe machen (10).
Kurs für maschinelles Lernen an der Tsukuba-Universität: Lernen Sie sklearn, während Sie das Python-Skript zu einem Teil der Aufgabe machen (13).
Kurs für maschinelles Lernen an der Tsukuba-Universität: Lernen Sie sklearn, während Sie das Python-Skript zu einem Teil der Aufgabe machen (9).
Kurs für maschinelles Lernen an der Tsukuba-Universität: Lernen Sie sklearn, während Sie das Python-Skript zu einem Teil der Aufgabe machen (4).
Kurs für maschinelles Lernen an der Tsukuba-Universität: Lernen Sie sklearn, während Sie das Python-Skript in die Aufgabe aufnehmen (12).
Kurs für maschinelles Lernen an der Tsukuba-Universität: Lernen Sie sklearn, während Sie das Python-Skript zu einem Teil der Aufgabe machen (1)
Kurs für maschinelles Lernen an der Tsukuba-Universität: Lernen Sie sklearn, während Sie das Python-Skript zu einem Teil der Aufgabe machen (11).
Kurs für maschinelles Lernen an der Tsukuba-Universität: Lernen Sie sklearn, während Sie das Python-Skript zu einem Teil der Aufgabe machen (3).
Kurs für maschinelles Lernen an der Tsukuba-Universität: Lernen Sie sklearn, während Sie das Python-Skript zu einem Teil der Aufgabe machen (14).
Kurs für maschinelles Lernen an der Tsukuba-Universität: Lernen Sie sklearn, während Sie das Python-Skript zu einem Teil der Aufgabe machen (6).
Kurs für maschinelles Lernen an der Tsukuba-Universität: Lernen Sie sklearn, während Sie das Python-Skript zu einem Teil der Aufgabe machen (15).
Kurs für maschinelles Lernen an der Tsukuba-Universität: 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
Kurs für maschinelles Lernen an der Tsukuba-Universität: Lernen Sie sklearn, während Sie das Python-Skript zu einem Teil der Aufgabe machen. (8) Erstellen Sie Ihre eigene stochastischste Methode für den steilsten Abstieg
Python & Machine Learning Study Memo ⑤: Klassifikation von Ayame
Python & Machine Learning Study Memo Introduction: Einführung in die Bibliothek
Bildersammlung Python-Skript zum Erstellen von Datensätzen für maschinelles Lernen
Zusammenfassung des grundlegenden Ablaufs des maschinellen Lernens mit Python
Das Ergebnis des maschinellen Lernens von Java-Ingenieuren mit Python www
[Bildbuch zum maschinellen Lernen] Memo, wenn die Python-Übung am Ende des Buches ausgeführt wurde, während die Daten überprüft wurden
Python-Lernnotiz für maschinelles Lernen von Chainer bis zum Ende von Kapitel 2
Python & Machine Learning Study Memo: Vorbereitung der Umgebung
Notizen vom Anfang von Python 1 lernen
Ich habe Python 3.5.1 installiert, um maschinelles Lernen zu studieren
Python-Grundkurs (Ende 15)
Python & Machine Learning Study Memo ③: Neuronales Netz
Python & maschinelles Lernen Lernnotiz Machine: Maschinelles Lernen durch Rückausbreitung
Notizen vom Anfang von Python 2 lernen
Python & Machine Learning Study Memo ⑥: Zahlenerkennung
Richten Sie die Anzahl der Stichproben zwischen Datenklassen für maschinelles Lernen mit Python aus
Einführung in das Buch "Erstellen einer profitablen KI mit Python", mit dem Sie in kürzester Zeit maschinelles Lernen erlernen können
[Python] Lesen Sie den Quellcode von Flasche Teil 2
Klassifizierung von Gitarrenbildern durch maschinelles Lernen Teil 1
Maschinelles Lernen beginnend mit Python Personal Memorandum Part2
Die Geschichte, dass die Lernkosten von Python niedrig sind
2016 Todai Mathematik mit Python gelöst
Maschinelles Lernen beginnend mit Python Personal Memorandum Part1
EV3 x Python Maschinelles Lernen Teil 2 Lineare Regression
[Python] Lesen Sie den Quellcode von Flasche Teil 1
Über die Entwicklungsinhalte des maschinellen Lernens (Beispiel)
Maschinelles Lernen eines jungen Ingenieurs Teil 2
Klassifizierung von Gitarrenbildern durch maschinelles Lernen Teil 2
Lassen Sie uns einen Teil des maschinellen Lernens mit Python berühren
Python & Machine Learning Study Memo ⑦: Aktienkursprognose
[Python + OpenCV] Malen Sie den transparenten Teil des Bildes weiß
Vorhersage der Zielzeit eines vollständigen Marathons mit maschinellem Lernen - Visual: Visualisierung von Daten mit Python-
Der erste Schritt des maschinellen Lernens ~ Für diejenigen, die versuchen möchten, mit Python zu implementieren ~
[CodeIQ] Ich habe die Wahrscheinlichkeitsverteilung von Würfeln geschrieben (aus dem CodeIQ-Mathematikkurs für maschinelles Lernen [Wahrscheinlichkeitsverteilung]).
[Maschinelles Lernen] "Erkennung von Abnormalitäten und Erkennung von Änderungen" Zeichnen wir die Abbildung von Kapitel 1 in Python.