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

In den letzten Jahren haben wir mit dem wachsenden Interesse an KI und Big Data analytische Methoden wie k-means als Ansatz für maschinelles Lernen kennengelernt. All dies sind ** multivariate Analysemethoden **, die seit der Showa-Ära seit Jahrzehnten im geschäftlichen und akademischen Bereich eingesetzt werden. Eine der beliebtesten Methoden ist die ** Regressionsanalyse **. Lassen Sie uns zunächst eine einfache Regressionsanalyse mit scikit-learn, einer Bibliothek für maschinelles Lernen, implementieren. (Schreiben Sie in der Regel den Code und überprüfen Sie das Ergebnis in Google Colaboratory.)

** einfache Regressionsanalyse </ font> **

Die Regressionsanalyse kann in ** einfache Regressionsanalyse ** für zwei Variablen und ** multiple Regressionsanalyse ** für drei oder mehr Variablen unterteilt werden. Betrachten Sie zunächst eine ** einfache Regressionsanalyse **. Die einfache Regressionsanalyse leitet das Gesetz von ** linear ** oder ** nichtlinear ** in Daten (Phänomen) ab ....., um es klar auszudrücken, $ y $, wenn $ x $ zunimmt. Zeigt auch die Regel des Erhöhens / Verringerns mit einer konstanten Geschwindigkeit. 002_001_007.PNG

Eine sehr einfache ** lineare einfache Regressionsanalyse ** wird durch die folgende Gleichung ausgedrückt. 002_001_013.PNG Diese Gleichung heißt ** Regressionsgleichung (einzelne Regressionsgleichung) **. Sobald Sie sich für $ a $ und $ b $ entschieden haben, können Sie eine gerade Linie ziehen. Dann kann $ x $ $ y $ erklären, oder $ x $ kann verwendet werden, um $ y $ vorherzusagen. Da die Variable $ y $ durch die Variable $ x $ erklärt wird, ist das Ziel $ y $ die ** Zielvariable ** (abhängige Variable), und das $ x $, das dies erklärt, ist die ** erklärende Variable ** (unabhängig). Es heißt eine Variable). Außerdem wird $ a $, das die Steigung der Regressionslinie angibt, als ** Regressionskoeffizient ** bezeichnet, und $ b $, das den Schnittpunkt mit der $ y $ -Achse angibt, wird als ** Abschnitt ** bezeichnet. Das heißt, das Ziel einer einfachen Regressionsanalyse besteht darin, den Regressionskoeffizienten a und Abschnitt b zu finden.

** ⑴ Bibliothek importieren **

#Bibliothek für numerische Berechnung erforderlich
import numpy as np
import pandas as pd
#Paket zum Zeichnen von Grafiken
import matplotlib.pyplot as plt
# scikit-Lineares Modell des Lernens
from sklearn import linear_model

** ⑵ Lesen Sie die Daten und überprüfen Sie den Inhalt **

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

002_001_001.PNG

** ⑶ Konvertiere die Variablen x und y in den Typ Numpy Array **

Die Variable df, in der die Daten gespeichert sind, hat die Form eines Pandas-Datenrahmens. Dies wird in den Array-Typ von Numpy konvertiert und zur späteren Berechnung in den Variablen x und y gespeichert.

x = df.loc[:, ['x']].values
y = df['y'].values

002_001_002.PNG Die Variable $ x $ wurde als zweidimensionale Daten gespeichert, indem die Elemente von [allen Zeilen, x Spalten] mit der Funktion "loc" von Pandas ausgeschnitten und in ein Numpy-Array mit "Werten" konvertiert wurden. Die Variable $ y $ wird durch Angabe des Spaltennamens $ y $ als eindimensionale Daten extrahiert und auf die gleiche Weise in ein Numpy-Array konvertiert.

** ⑷ Zeichnen Sie die Daten in das Streudiagramm **

Verwenden Sie das Zeichenpaket matplotlib, um (Variable x, Variable y, Markertyp) im Argument der Funktion plot anzugeben.

plt.plot(x, y, "o")

002_001_003.PNG

** Ab hier verwenden wir das lineare Regressionsmodell der maschinellen Lernbibliothek scikit-learn, um den Regressionskoeffizienten $ a $ und den Abschnitt $ b $ zu berechnen. ** ** **

** ⑸ Wenden Sie die Variablen x und y auf das lineare Regressionsmodell an **

#Laden Sie das lineare Regressionsmodell und verwenden Sie es als Funktion clf
clf = linear_model.LinearRegression()
#Variante x für Funktion clf,Bewerben y
clf.fit(x, y)

** ⑹ Regressionskoeffizient / Schnitt berechnen **

Der Regressionskoeffizient kann mit "coef_" erhalten werden und der Abschnitt kann mit "intercept_" erhalten werden.

#Regressionskoeffizienten
a = clf.coef_
#Sektion
b = clf.intercept_

002_001_005.PNG

** ⑺ Berechnen Sie den Entscheidungskoeffizienten **

Dann erhalten Sie den Entscheidungsfaktor als "Punktzahl (Variable x, Variable y)".

#Entscheidungskoeffizient
r = clf.score(x, y)

002_001_006.PNG

** Entscheidungsfaktor </ font> **

Der Bestimmungskoeffizient ist ein Index, der die erhaltene ** Genauigkeit der Regressionsgleichung ** ausdrückt. Die Genauigkeit in diesem Fall ist "wie gut die Regressionsgleichung die Verteilung der Daten erklären kann". Der Entscheidungsfaktor ist wie folgt definiert: 002_001_014.PNG Die tatsächlich beobachteten Daten werden als ** Messwert ** bezeichnet. Wie Sie dem Streudiagramm entnehmen können, werden die gemessenen Werte auf die Koordinaten gestreut. Da dies in einer einzigen geraden Linie zusammengefasst ist, werden einige der Informationen, die die ursprüngliche Verteilung enthält, abgelehnt. Dieser zurückgewiesene Teil, dh der mit der Regressionsgleichung verbundene Fehler, wird als ** Rest ** bezeichnet und kann in Form eines Bruchs wie folgt ausgedrückt werden. 002_001_008.PNG Der Nenner ist die Varianz der Zielvariablen $ y $, die der gemessene Wert ist, und der Zähler wird mit der Varianz des vorhergesagten Wertes $ \ hat {y} $ durch die Regressionsgleichung und die Reduktion des Residuums auf und ab ausgeglichen. Mit anderen Worten ist der Bestimmungskoeffizient, welcher Prozentsatz der Varianz des gemessenen Wertes die Varianz des vorhergesagten Wertes ist. Da es sich um ein Verhältnis handelt, nimmt der Bestimmungskoeffizient $ R ^ 2 $ immer einen Wert zwischen 0 und 1 an. Je näher er an 1 liegt, desto besser ist die Genauigkeit der Regressionsgleichung.

** ⑻ Setze den x-Wert, um die Regressionslinie zu zeichnen **

Zuerst wird der $ x $ -Wert, der die Quelle der Regressionslinie ist, unter Verwendung der Numpy-Funktion "Linspace" erzeugt. Geben Sie als Argument "(Startpunkt, Endpunkt, Anzahl der Trennzeichen)" an.

fig_x = np.linspace(0, 40, 40)

002_001_009.PNG

** ⑼ Überprüfen Sie die Form des Regressionskoeffizienten, des Abschnitts und des x-Werts **

print(a.shape) #Regressionskoeffizienten
print(b.shape) #Sektion
print(fig_x.shape) #x-Wert

002_001_010.PNG

Tips

Wenn Sie $ y = ax + b $ so wie es ist ersetzen, tritt ein Fehler auf. Dies liegt daran, dass der Regressionskoeffizient $ a $ ein Array-Typ mit 1 Zeile x 1 Spalte ist und der Wert $ x $ ein Array-Typ mit 40 Zeilen x 1 Spalte ist, sodass er die Regeln für das Multiplizieren von Arrays nicht erfüllt. Daher müssen wir den Regressionskoeffizienten $ a $ in einen einzelnen Wert umwandeln, damit alle $ x $ -Werte gleich multipliziert werden.

** ⑽ Variable y definieren **

Bei der Definition der Formel für den y-Wert, die Variable fig_y, verwenden wir die Funktion "Umformung" von Numpy, um die Form des Regressionskoeffizienten $ a $ zu transformieren.

fig_y = a.reshape(1)*fig_x + b

002_001_011.PNG

** ⑾ Zeichne eine Regressionslinie **

#Streudiagramm
plt.plot(x, y, "o")
#Gerade zurückgeben
plt.plot(fig_x, fig_y, "r") #Ändern Sie die Linienfarbe mit dem dritten Argument"r"Bezeichnet für

plt.show()

002_001_012.PNG


Wie oben beschrieben, ist es unter Verwendung der Bibliothek für maschinelles Lernen möglich, Analyseergebnisse ohne komplizierte Berechnungen zu erhalten. Obwohl es nicht auf die Regressionsanalyse beschränkt ist, kennen wir den Berechnungsmechanismus (Algorithmus), wenn es darum geht, das Berechnungsergebnis richtig zu interpretieren oder eine delikate Abstimmung beim Betrieb der Methode durchzuführen. Es ist wünschenswert, es zu behalten. Als nächstes lernen Sie Ihre eigene einfache Regressionsanalyse, ohne scicit-learn zu verwenden.

Recommended Posts