Erläuterung des Konzepts der Regressionsanalyse mit Python Extra 1

Minimale Quadratmethode zum Verstehen mit Animation

Erläuterung des Konzepts der Regressionsanalyse mit Python Teil 1 verwendet die Methode der kleinsten Quadrate, um die optimale gerade Linie für die Daten zu zeichnen. Ich erklärte, die Parameter einzustellen, um den Unterschied (Fehler) von zu minimieren. Als zusätzliche Ausgabe habe ich hier versucht, ein Diagramm zu zeichnen, indem ich animierte, wie sich die einzelnen Parameter ändern. Wenn Sie dies versuchen, erhalten Sie ein Bild.

Die "Summe der quadratischen Fehler" im Titel des Diagramms ist die Summe der Quadrate der Fehler. Die beste Position ist also dort, wo dies die kleinste ist.

Die Neigung ändert sich

Lassen Sie uns zunächst sehen, wie sich die Neigung ändert.

regression_anim.gif

Ich verwende die Funktion matplotlib.animation.FuncAnimation, um die Animation mit matplotlib auszugeben. Lassen Sie uns die Funktion, die das Diagramm zeichnet, verlassen und den Wert, der durch Animation geändert werden soll, als Argument verwenden. Hier machen wir eine Animationsfunktion. Diese Animationsfunktion wird in der FuncAnimation-Funktion aufgerufen, und der in nframe von 0 bis frame festgelegte Wert wird in der Reihenfolge als Argument festgelegt und aufgerufen.

import numpy as np
import matplotlib.pyplot as plt
from moviepy.editor import *
from matplotlib import animation as ani

data= np.loadtxt('cars.csv',delimiter=',',skiprows=1)
data[:,1] = map(lambda x: x * 1.61, data[:,1])    #km von mph/In h konvertieren
data[:,2] = map(lambda y: y * 0.3048, data[:,2])  #Konvertieren Sie von ft nach m

def animate(nframe):
    plt.clf()        # clear graph canvas
    slope = 0.746606334842 * (float(nframe)/50) *2   #Die Steigung ändert sich, wenn sich der nframe des Arguments ändert
    intercept = - 5.41583710407
    x = np.linspace(0,50,50)
    y = slope * x + intercept
    plt.ylim(-10,80)
    plt.xlim(0,50)
    plt.xlabel("speed(km/h)")
    plt.ylabel("distance(m)")
    plt.scatter(data[:,1],data[:,2])
    # draw errors
    se = 0
    i = 0
    for d in data:
        plt.plot([d[1],d[1]],[d[2],d[1]*slope+intercept],"k")
        se += (y[i] - d[2]) ** 2
        i += 1
    plt.title("Stopping Distances of Cars (slope=%.3f, sum of square errors=%5d)" % (slope, se))
    # based line: y = 0.74x -5
    plt.plot(x,y)


fig = plt.figure(figsize=(10,6))

anim = ani.FuncAnimation(fig, animate, frames=50, blit=True)

anim.save('regression_anim.mp4', fps=13)

clip = VideoFileClip("regression_anim.mp4")
clip.write_gif("regression_anim.gif")


Wie sich die Abschnitte ändern

Im Gegensatz zu zuvor bewegt sich der Abschnitt.

regression_anim_i.gif


def animate(nframe):
    plt.clf()        # clear graph canvas
    slope = 0.746606334842 
    intercept = -5.41583710407 + (float(nframe-25)/50) * 50   #Intercept ändert sich, wenn sich der nframe des Arguments ändert
    x = np.linspace(0,50,50)
    y = slope * x + intercept
    plt.ylim(-30,80)
    plt.xlim(0,50)
    plt.xlabel("speed(km/h)")
    plt.ylabel("distance(m)")
    plt.scatter(data[:,1],data[:,2])
    # draw errors
    se = 0
    i = 0
    for d in data:
        plt.plot([d[1],d[1]],[d[2],d[1]*slope+intercept],"k")
        se += (y[i] - d[2]) ** 2
        i += 1
    plt.title("Stopping Distances of Cars (slope=%.3f, sum of square errors=%5d)" % (slope, se))
    # based line: y = 0.74x -5
    plt.plot(x,y)


fig = plt.figure(figsize=(10,6))

anim = ani.FuncAnimation(fig, animate, frames=50, blit=True)

anim.save('regression_anim_i.mp4', fps=13)

clip = VideoFileClip("regression_anim_i.mp4")
clip.write_gif("regression_anim_i.gif")

Recommended Posts

Erläuterung des Konzepts der Regressionsanalyse mit Python Extra 1
Erläuterung des Konzepts der Regressionsanalyse mit Python Teil 2
Erläuterung des Konzepts der Regressionsanalyse mit Python Teil 1
Berechnen Sie den Regressionskoeffizienten der einfachen Regressionsanalyse mit Python
Überprüfen Sie das Konzept und die Terminologie der Regression
Zeitvariationsanalyse von Schwarzen Löchern mit Python
der Zen von Python
Grundlagen der Regressionsanalyse
Regressionsanalyse mit Python
Vorhersage der Zukunft der Bevölkerungsentwicklung in Numazu City durch Zeitreihen-Regressionsanalyse mit Prophet
[Python] [Word] [python-docx] Einfache Analyse von Diff-Daten mit Python
Schneiden Sie einen Teil der Zeichenfolge mit einem Python-Slice aus
Python-Implementierung der Bayes'schen linearen Regressionsklasse
Der Schmerz von gRPC mit Python. November 2019. (Persönliches Memo)
Studie aus Python Hour8: Verwenden von Paketen
Auf dem Weg zum Ruhestand von Python2
Statische Analyse von Python-Programmen
Python: Grundlagen der Verwendung von Scikit-Learn ①
Einfache Regressionsanalyse mit Python
Über die Funktionen von Python
Datenanalyse mit Python-Pandas
Die Kraft der Pandas: Python
Anzeigen mit dem Python-Modul des mobilen Nifty Cloud-Backends
[Python] LASSO-Regression mit Gleichungsbeschränkung unter Verwendung der Multiplikatormethode
Die Geschichte von Python und die Geschichte von NaN
Japanische Verarbeitung natürlicher Sprache mit Python3 (4) Emotionsanalyse durch logistische Regression
Erste einfache Regressionsanalyse in Python
[Python] Der Stolperstein des Imports
Erster Python 3 ~ Der Beginn der Wiederholung ~
[Python] Ich habe die Route des Taifuns mit Folium auf die Karte geschrieben
Python: Anwendung des überwachten Lernens (Rückkehr)
[Python] PCA-Scratch im Beispiel "Einführung in die multivariate Analysemethode"
Existenz aus Sicht von Python
[Python] LINE-Benachrichtigung über die neuesten Informationen mithilfe der automatischen Suche von Twitter
pyenv-change die Python-Version von virtualenv
[Python] Ich habe die Theorie und Implementierung der logistischen Regression gründlich erklärt
[In-Database Python Analysis-Lernprogramm mit SQL Server 2017] Schritt 6: Verwenden des Modells
[Python] Die potenzielle Feldplanung von Python Robotics verstehen
Bewerten Sie die Leistung eines einfachen Regressionsmodells mithilfe der LeaveOneOut-Schnittstellenvalidierung
Überprüfung der Grundlagen von Python (FizzBuzz)
Implementierung von Desktop-Benachrichtigungen mit Python
Rufen Sie den Wert des Dropdown-Menüs mit Python und Selen ab und legen Sie ihn fest
Extrahieren Sie die Targz-Datei mit Python
Versuchen Sie es mit dem Python Cmd-Modul
Von der Einführung von JUMAN ++ bis zur morphologischen Analyse von Japanisch mit Python
Empfehlung zur Datenanalyse mit MessagePack
Logistische Regressionsanalyse Selbst erstellt mit Python
Informationen zur Grundlagenliste der Python-Grundlagen
Ergänzung zur Erklärung von vscode
Empfehlungs-Tutorial mit Assoziationsanalyse (Konzept)
Lernen Sie die Grundlagen von Python ① Grundlegende Anfänger
[Erklärung zum AtCoder] Kontrollieren Sie die A-, B- und C-Probleme von ABC182 mit Python!
Zeigen Sie das Ergebnis der Videoanalyse mit der Cloud Video Intelligence API von Colaboratory an.