Maschinelles Lernen - Lineare Regression
- Vorherige Seite Streudiagramm
- Nächste Seite Polynomial Regression
Rückregression
Wenn Sie versuchen, Beziehungen zwischen Variablen zu finden, wird der Begriff „Rückregression“ (regression) verwendet.
In Maschinenlernen und statistischer Modellierung wird diese Beziehung zur Vorhersage der Ergebnisse zukünftiger Ereignisse verwendet.
Lineare Regression
Die lineare Regression zeichnet eine Linie zwischen allen Datenpunkten, die die Beziehung zwischen den Datenpunkten verwenden.
Diese Linie kann verwendet werden, um zukünftige Werte vorherzusagen.

In der Maschinenlernen ist die Vorhersage der Zukunft sehr wichtig.
Arbeitsweise
Python bietet einige Methoden, um die Beziehung zwischen Datenpunkten zu finden und die lineare Regressionslinie zu zeichnen. Wir werden Ihnen zeigen, wie Sie diese Methoden verwenden können, anstatt durch mathematische Formeln.
Im folgenden Beispiel bedeutet die x-Achse das Alter des Autos und die y-Achse die Geschwindigkeit. Wir haben die Alter und Geschwindigkeit von 13 Autos, die durch eine Mautstelle gefahren sind, aufgeschrieben. Lassen Sie uns sehen, ob die gesammelten Daten für die lineare Regression verwendet werden können:
Beispiel
Zuerst zeichne das Streudiagramm:
import matplotlib.pyplot as plt x = [5,7,8,7,2,17,2,9,4,11,12,9,6] y = [99,86,87,88,111,86,103,87,94,78,77,85,86] plt.scatter(x, y) plt.show()
Ergebnis:

Beispiel
Importiere scipy
und zeichne die lineare Regressionslinie:
import matplotlib.pyplot as plt von scipy import stats x = [5,7,8,7,2,17,2,9,4,11,12,9,6] y = [99,86,87,88,111,86,103,87,94,78,77,85,86] Slope, intercept, r, p, std_err = stats.linregress(x, y) def myfunc(x): return slope * x + intercept mymodel = list(map(myfunc, x)) plt.scatter(x, y) plt.plot(x, mymodel) plt.show()
Ergebnis:

Beispiel-Erklärung
Importiere erforderliche Module:
import matplotlib.pyplot as plt von scipy import stats
Erstelle ein Array, das die Werte auf der x- und y-Achse darstellt:
x = [5,7,8,7,2,17,2,9,4,11,12,9,6] y = [99,86,87,88,111,86,103,87,94,78,77,85,86]
Führe ein Verfahren aus, das einige wichtige Schlüsselwerte der linearen Regression zurückgibt:
Slope, intercept, r, p, std_err = stats.linregress(x, y)
Erstelle eine, die verwendet Steigung
und Schnittpunkt
Die Funktion für Werte gibt neue Werte zurück. Dieser neue Wert stellt die Position dar, an der der entsprechende x-Wert auf der y-Achse platziert wird:
def myfunc(x): return slope * x + intercept
Führe jede Wert des x-Arrays durch die Funktion. Dies erzeugt ein neues Array, bei dem die y-Achse neue Werte hat:
mymodel = list(map(myfunc, x))
Zeichne das ursprüngliche Streudiagramm:
plt.scatter(x, y)
Zeichne die lineare Regressionslinie:
plt.plot(x, mymodel)
Zeige Diagramm:
plt.show()
Quadratkorrelationskoeffizient
Es ist wichtig zu wissen, wie gut die Werte auf der x-Achse und die Werte auf der y-Achse miteinander in Beziehung stehen, da lineare Regression ohne Beziehung nichts vorherzusagen kann.
Diese Beziehung wird durch einen Wert gemessen, der als Quadratkorrelationskoeffizient (r²) bezeichnet wird.
Der Wert des Quadratkorrelationskoeffizienten (r²) liegt zwischen 0 und 1, wobei 0 unkorreliert und 1 100% korreliert bedeutet.
Der Python- und Scipy-Modul berechnen diesen Wert für Sie, alles, was Sie tun müssen, ist die x- und y-Werte zu liefern:
Beispiel
Wie gut passen meine Daten in der linearen Regression?
von scipy import stats x = [5,7,8,7,2,17,2,9,4,11,12,9,6] y = [99,86,87,88,111,86,103,87,94,78,77,85,86] Slope, intercept, r, p, std_err = stats.linregress(x, y) print(r)
Anmerkung:Das Ergebnis -0,76 zeigt, dass eine Art von Beziehung besteht, aber nicht eine perfekte Beziehung, aber es zeigt, dass wir lineare Regression in zukünftigen Vorhersagen verwenden können.
Vorhersage zukünftiger Werte
Jetzt können wir die gesammelten Informationen verwenden, um zukünftige Werte vorherzusagen.
Beispiel: Lassen Sie uns versuchen, die Geschwindigkeit eines Autos mit 10 Jahren Alter vorherzusagen.
Dafür benötigen wir dasselbe wie im obigen Beispiel: myfunc()
Funktion:
def myfunc(x): return slope * x + intercept
Beispiel
Vorhersage der Geschwindigkeit eines Autos mit 10 Jahren Alter:
von scipy import stats x = [5,7,8,7,2,17,2,9,4,11,12,9,6] y = [99,86,87,88,111,86,103,87,94,78,77,85,86] Slope, intercept, r, p, std_err = stats.linregress(x, y) def myfunc(x): return slope * x + intercept speed = myfunc(10) print(speed)
Die Vorhersagegeschwindigkeit beträgt 85,6, und wir können dies auch aus dem Diagramm ablesen:

Schlechte Anpassung?
Lassen Sie uns einen Beispielfall erstellen, bei dem die lineare Regression nicht die beste Methode zur Vorhersage zukünftiger Werte ist.
Beispiel
Diese Werte für die x- und y-Achse führen zu einer sehr schlechten Anpassung der linearen Regression:}
import matplotlib.pyplot as plt von scipy import stats x = [89,43,36,36,95,10,66,34,38,20,26,29,48,64,6,5,36,66,72,40] y = [21,46,3,35,67,95,53,72,58,10,26,34,90,33,38,20,56,2,47,15] Slope, intercept, r, p, std_err = stats.linregress(x, y) def myfunc(x): return slope * x + intercept mymodel = list(map(myfunc, x)) plt.scatter(x, y) plt.plot(x, mymodel) plt.show()
Ergebnis:

und r-squared-Wert?
Beispiel
Sie sollten einen sehr niedrigen r-squared-Wert erhalten haben.
import numpy von scipy import stats x = [89,43,36,36,95,10,66,34,38,20,26,29,48,64,6,5,36,66,72,40] y = [21,46,3,35,67,95,53,72,58,10,26,34,90,33,38,20,56,2,47,15] Slope, intercept, r, p, std_err = stats.linregress(x, y) print(r)
Ergebnis: 0,013 zeigt eine sehr schlechte Beziehung und teilt uns mit, dass der Datensatz nicht für lineare Regression geeignet ist.
- Vorherige Seite Streudiagramm
- Nächste Seite Polynomial Regression