2. Multivariate Analyse in Python 1-2. Einfache Regressionsanalyse (Algorithmus)

Wir werden eine einfache Regressionsgleichung finden, die nur Numpy und Pandas verwendet, die für grundlegende numerische Berechnungen erforderlich sind.

** ⑴ Bibliothek importieren **

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

** ⑵ Daten importieren und Inhalt prüfen **

df = pd.read_csv("https://raw.githubusercontent.com/karaage0703/machine-learning-study/master/data/karaage_data.csv")
print(df.head())

002_002_001.PNG

** Methode des minimalen Quadrats </ font> **

Das Ziel der einfachen Regressionsanalyse war es, die beiden in der Regressionsgleichung enthaltenen Konstanten zu finden: den Regressionskoeffizienten $ a $ und den Abschnitt $ b $. Zu diesem Zeitpunkt werden die Konstanten $ a $ und $ b $ bestimmt, um eine genauere einfache Regressionsgleichung zu erhalten, so dass der Gesamtfehler, dh der Rest $ y- \ hat {y} $, so klein wie möglich ist. Ich muss. Betrachten Sie diese ** Definition von Residuen **. 002_002_002.PNG e_{1}+e_{2}+e_{3}…+e_{n} Es sieht so aus, aber das ist falsch. Die gemessenen Werte sind auf jeder positiven und negativen Seite der Regressionslinie ungleich verteilt. Mit anderen Worten, das Plus und das Minus heben sich gegenseitig auf und die Summe ist 0. 002_002_003.PNG Durch Quadrieren des Residuums für jedes Individuum werden daher das Positive und das Negative eliminiert, und es kann einfach als die Größe (Entfernung) der Entfernung behandelt werden. Q = {e_{1}}^{2}+{e_{2}}^{2}+{e_{3}}^{2}…+{e_{n}}^{2} $ Q $ wurde als Gesamtabstand von der Regressionslinie definiert. Der kleinste dieser $ Q $ ist der entscheidende Faktor für die Steigung der Regressionslinie $ a $, und wenn er erhalten wird, kann der Schnittpunkt $ b $ mit der $ y $ -Achse natürlich erhalten werden. Diese Methode wird als ** Methode der kleinsten Quadrate ** bezeichnet.

Wir werden die einfache Regressionsgleichung basierend auf der Methode der kleinsten Quadrate lösen.

** ⑶ Berechnen Sie den Durchschnittswert jeder der Variablen x und y **

mean_x = df['x'].mean()
mean_y = df['y'].mean()

002_002_004.PNG

** ⑷ Berechnen Sie die Abweichung jeder der Variablen x und y **

Die Abweichung ist die Differenz zwischen dem numerischen Wert und dem Durchschnittswert jedes Einzelnen. Berechnen Sie $ x_ {i} - \ bar {x} $ für die Variable $ x $ und $ y- \ bar {y} $ für die Variable $ y $. Jede Variable wird für die Anzahl der Daten berechnet.

#Abweichung von x
dev_x = []
for i in df['x']:
    dx = i - mean_x
    dev_x.append(dx)
#Abweichung von y
dev_y = []
for j in df['y']:
    dy = j - mean_y
    dev_y.append(dy)

002_002_005.PNG

** ⑸ Berechnen Sie die Verteilung der Variablen x **

Berechnen Sie die Varianz anhand der in (4) erhaltenen Abweichung. Die Varianz ist der Durchschnitt der Quadrate der Abweichungen, dh der Quadrate für jede Abweichung und der Summe der Abweichungen geteilt durch den numerischen Wert (Anzahl der Daten-1).

#Summe der Abweichungsquadrate
ssdev_x = 0
for i in dev_x:
    d = i ** 2
    ssdev_x += d
#Verteilt
var_x = ssdev_x / (len(df) - 1)

002_002_006.PNG

** ⑹ Kovarianz berechnen **

Die Kovarianz $ s_ {xy} $ ist einer der Indizes, die die Stärke der Beziehung zwischen zwei Variablen anzeigen, und wird durch die folgende Gleichung definiert. s_{xy} = \frac{1}{n - 1} \displaystyle \sum_{i = 1}^n {(x_i - \overline{x})(y_{i} - \overline{y})} Betrachten Sie einen Datensatz für jede Person. Wenn es $ n $ Paare von $ (x_ {1}, y_ {1}), (x_ {2}, y_ {2}), ..., (x_ {n}, y_ {n}) $ gibt Multiplizieren Sie die Abweichung von $ x $ und die Abweichung von $ y $ für jedes Paar und dividieren Sie die Summe durch den numerischen Wert von (Anzahl der Daten-1).

#Summe der Abweichungen
spdev = 0
for i,j in zip(df['x'], df['y']):
    spdev += (i - mean_x) * (j - mean_y)
#Mitverteilt
cov = spdev / (len(df) - 1)

002_002_007.PNG

** ⑺ Berechnen Sie den Regressionskoeffizienten a **

Hier ist die Formel zum Ermitteln des Regressionskoeffizienten nach der Methode der kleinsten Quadrate. a = \frac{S_{xy}}{Sx^2} Der Regressionskoeffizient $ a $ kann erhalten werden, indem die in ⑹ erhaltene Kovarianz $ S_ {xy} $ durch die Varianz $ Sx ^ 2 $ der in ⑸ erhaltenen Variablen $ x $ dividiert wird.

a = cov / var_x

002_002_008.PNG

** ⑻ Berechne Abschnitt b **

Durch Transformieren der einfachen Regressionsgleichung $ y = ax + b $ und Setzen von $ b = y -ax $ werden der Durchschnittswert $ \ bar {x}, \ bar {y} $ in ⑶ und der Regressionskoeffizient in ⑺ erhalten Ersetzen Sie $ a $.

b = mean_y - (a * mean_x)

002_002_009.PNG

** Wie oben erwähnt, wurde die einfache Regressionsgleichung nach der Formel der Methode der kleinsten Quadrate erhalten. ** ** ** ** Es stimmt mit dem Berechnungsergebnis überein, das mit der maschinellen Lernbibliothek scikit-learn erhalten wurde. Daher werde ich auch die Bestätigung des Entscheidungskoeffizienten selbst berechnen. ** ** **

** ⑼ Berechnen Sie den Entscheidungskoeffizienten und überprüfen Sie die Genauigkeit der Regressionsgleichung **

Verwenden Sie die Regressionsgleichung, um Vorhersagewertdaten zu erstellen und deren Varianz zu ermitteln. Wie viel Prozent der Varianz des gemessenen Wertes $ y $, dh wie viel kann die ursprüngliche Variation $ y $ erklärt werden?

#Datenerstellung des vorhergesagten Wertes z
df['z'] = (a * df['x']) + b
print(df)

#Vorhersagewert z Varianz
ssdev_z = 0
for i in df['z']:
    j = (i - df['z'].mean())**2
    ssdev_z += j
var_z = ssdev_z / (len(df) - 1)
print("Voraussichtliche Wertverteilung:", var_z)

#Dispersion des Messwertes y
ssdev_y = 0
for i in dev_y:
    j = i ** 2
    ssdev_y += j
var_y = ssdev_y / (len(df) - 1)
print("Dispersion des Messwertes y:", var_y)

#Entscheidungskoeffizient
R = var_z / var_y
print("Entscheidungsfaktor R.:", R)

002_002_010.PNG Es wurde bestätigt, dass der Bestimmungskoeffizient auch mit dem Berechnungsergebnis durch Scikit-Learn oben übereinstimmt.

** ⑽ Zeige das Streudiagramm mit der Regressionslinie **

plt.plot(x, y, "o") #Streudiagramm
plt.plot(x, z, "r") #Gerade zurückgeben
plt.show()

002_002_011.PNG

Bisher haben Sie die Algorithmen für die einfache Regressionsanalyse gelernt. In der realen Welt gibt es jedoch nur wenige Fälle, in denen ein bestimmtes Phänomen nur durch einen Faktor erklärt werden kann. Vor dem Hintergrund eines bestimmten Phänomens sind verschiedene Faktoren mehr oder weniger gleichzeitig miteinander verflochten. Als Nächstes lernen Sie eine multiple Regressionsanalyse, die sich mit drei oder mehr Variablen befasst.

Recommended Posts

2. Multivariate Analyse in Python 1-2. Einfache Regressionsanalyse (Algorithmus)
2. Multivariate Analyse in Python 1-1. Einfache Regressionsanalyse (Scikit-Learn)
2. Multivariate Analyse in Python 3-2. Hauptkomponentenanalyse (Algorithmus)
2. Multivariate Analyse in Python 2-1. Multiple Regressionsanalyse (Scikit-Learn)
2. Multivariate Analyse in Python 5-3. Logistische Regressionsanalyse (Statistikmodelle)
Einfache Regressionsanalyse mit Python
2. Multivariate Analyse in Python 2-3. Multiple Regressionsanalyse [COVID-19-Infektionsrate]
Erste einfache Regressionsanalyse in Python
2. Multivariate Analyse in Python 7-1. Entscheidungsbaum (Scikit-Learn)
2. Multivariate Analyse in Python 6-1. Ridge-Regression / Lasso-Regression (Scikit-Learn) [multiple Regression vs. Ridge-Regression]
2. Multivariate Analyse in Python 8-2. K Nachbarschaftsmethode [Gewichtungsmethode] [Rückgabemodell]
2. Multivariate Analyse in Python 3-1. Hauptkomponentenanalyse (Scikit-Learn)
2. Multivariate Analyse in Python 6-3. Ridge-Regression / Lasso-Regression (Scikit-Learn) [Funktionsweise der Regularisierung]
2. Multivariate Analyse in Python 8-1. K Nachbarschaftsmethode (Scikit-Learn)
2. Multivariate Analyse in Python 8-3. K Nachbarschaftsmethode [Schnittstellenüberprüfung]
Regressionsanalyse mit Python
2. Multivariate Analyse in Python 7-2. Entscheidungsbaum [Unterschied in den Teilungskriterien]
Algorithmus für maschinelles Lernen (Einzelregressionsanalyse)
Implementierung eines einfachen Algorithmus in Python 2
Einfache Implementierung einer Regressionsanalyse mit Keras
Führen Sie einen einfachen Algorithmus in Python aus
Schreiben Sie eine einfache Giermethode in Python
Einfacher gRPC in Python
Genetischer Algorithmus in Python
Algorithmus in Python (Bellman-Ford-Methode, Bellman-Ford)
Assoziationsanalyse in Python
Algorithmus in Python (Dijkstra)
Python Scikit-learn Lineare Regressionsanalyse Nichtlineare einfache Regressionsanalyse Maschinelles Lernen
Berechnen Sie den Regressionskoeffizienten der einfachen Regressionsanalyse mit Python
Mehrfacher Regressionsausdruck in Python
Algorithmus in Python (Haupturteil)
Axialsymmetrische Spannungsanalyse mit Python
Reproduzieren Sie die euklidische Methode der gegenseitigen Teilung in Python
Algorithmus in Python (Dichotomie)
Implementieren Sie den Dijkstra-Algorithmus in Python
Online lineare Regression in Python
Einfacher IRC-Client mit Python
Einfache Regressionsanalyse, verstanden durch mathematische Überprüfung des Moore'schen Gesetzes an der High School
Gehirnwellenanalyse mit Python: Python MNE-Tutorial
Eine einfache Datenanalyse von Bitcoin, die von CoinMetrics in Python bereitgestellt wird
Einfaches OAuth 2 mit Python (urllib + oauthlib)
Sortieralgorithmus und Implementierung in Python
[Python] PCA-Scratch im Beispiel "Einführung in die multivariate Analysemethode"
Algorithmus für maschinelles Lernen (multiple Regressionsanalyse)
Schreiben Sie A * (A-Stern) -Algorithmen in Python
[Statistischer Test 2. Klasse / quasi 1. Klasse] Regressives Analysetraining mit Python (2)
Lassen Sie uns mit Python 2 einen Investitionsalgorithmus entwickeln
Algorithmus in Python (Tiefenprioritätssuche, dfs)
Vorhersagestatistik (einfache Regression üben) Python
[Statistischer Test 2. Klasse / quasi 1. Klasse] Regressives Analysetraining mit Python (1)
Planare Skelettanalyse in Python (2) Hotfix
Algorithmus (Segmentbaum) in Python (Übung)
Logistische Regressionsanalyse Selbst erstellt mit Python
Einfache Gacha-Logik in Python geschrieben
Vorhersagestatistik (einfache Regression üben) Python
Predictive Statistics (Übungsklassifizierung) Python
Mehrfacher Regressionsausdruck in Python
Statistik mit Python
Prädiktive Statistik (Theorie)
Anfänger üben Python
2. Multivariate Analyse in Python 2-1. Multiple Regressionsanalyse (Scikit-Learn)
Erste Python 3rd Edition
Python für Feature Prediction Statistics
Merge Nodes-Houdini Python Practice
Python: Überwachtes Lernen (Rückkehr)
Regressionsanalyse mit Python
Lineare Regression in Python (Statmodelle, Scikit-Learn, PyMC3)
Ein einfacher HTTP-Client, der in Python implementiert ist
Ali Buch in Python: Sec.2-5 Dyxtra-Methode
Algorithmus in Python (ABC 146 C Dichotomie
Versuchen Sie, eine einfache Animation in Python zu zeichnen
Online lineare Regression in Python (Robuste Schätzung)