Python -Tutorial

Python-HOME Python-Einführung Python-Erste Schritte Python-Syntax Python-Kommentare Python-Variablen Python-Datentypen Python-Zahlen Python-Casting Python-Strings Python-Booleans Python-Operatoren Python-Listen Python-Tupel Python-Sets Python-Wörterbücher Python Wenn ... Sonst Python-While-Schleifen Python-For-Schleifen Python-Funktionen Python-Lambda Python-Arrays Python-Klassen/Objekte Python-Vererbung Python-Iteratoren Python-Bereich Python-Module Python-Daten Python-Mathematik Python-JSON Python-RegEx Python-PIP Python Versuchen ... Außer Python-Benutzereingabe Formatierung von Python-Strings

Umgang mit Dateien

Umgang mit Python-Dateien Python-Dateien lesen Python-Dateien schreiben/erstellen Python-Dateien löschen

Python-Module

NumPy-Tutorial Panda-Komplettlösung Scipy-Tutorial

Python-Matplotlib

Matplotlib-Einführung Matplotlib loslegen Matplotlib-Pyplot Matplotlib-Plotten Matplotlib-Marker Matplotlib-Linie Matplotlib-Labels Matplotlib-Raster Matplotlib-Subplots Matplotlib-Scatter Matplotlib-Bars Matplotlib-Histogramme Matplotlib-Kreisdiagramme

Maschinelles Lernen

Einstieg Mittlerer Medianmodus Standardabweichung Perzentil Datenverteilung Normale Datenverteilung Streudiagramm Lineare Regression Polynomiale Regression Mehrfache Regression Skala Trainieren/Testen Entscheidungsbaum

Python-MySQL

MySQL-erste Schritte MySQL-Datenbank erstellen MySQL-Tabelle erstellen MySQL-Einfügung MySQL-Auswahl MySQL-Wo MySQL-Reihenfolge nach MySQL löschen MySQL-Drop-Tabelle MySQL-Update MySQL-Limit MySQL-Beitritt

Python-MongoDB

Beginnen Sie mit MongoDB MongoDB Datenbank erstellen MongoDB-Create-Sammlung MongoDB-Einfügung MongoDB-Suche MongoDB-Abfrage MongoDB-Sortierung MongoDB löschen MongoDB-Drop-Sammlung MongoDB-Update MongoDB-Limit

Python-Referenz

Python-Übersicht Eingebaute Python-Funktionen Python-String-Methoden Python-Listenmethoden Methoden des Python-Wörterbuchs Python-Tupelmethoden Python-Set-Methoden Python-Dateimethoden Python-Schlüsselwörter Python-Ausnahmen Python-Glossar

Modulreferenz

Zufallsmodul Anforderungsmodul Statistikmodul Mathe-Modul cMath-Modul

Python-Anleitung

Listenduplikate entfernen Einen String umkehren Fügen Sie zwei Zahlen hinzu

Python-Beispiele

Python-Beispiele Python-Compiler Python-Übungen Python-Quiz Python-Zertifikat

Maschinelles Lernen – Lineare Regression


Rückfall

Der Begriff Regression wird verwendet, wenn Sie versuchen, die Beziehung zwischen Variablen zu finden.

Beim maschinellen Lernen und bei der statistischen Modellierung wird diese Beziehung verwendet, um das Ergebnis zukünftiger Ereignisse vorherzusagen.


Lineare Regression

Die lineare Regression verwendet die Beziehung zwischen den Datenpunkten, um eine gerade Linie durch alle zu ziehen.

Diese Linie kann verwendet werden, um zukünftige Werte vorherzusagen.

Beim maschinellen Lernen ist die Vorhersage der Zukunft sehr wichtig.


Wie funktioniert es?

Python verfügt über Methoden, um eine Beziehung zwischen Datenpunkten zu finden und eine lineare Regressionslinie zu zeichnen. Wir zeigen Ihnen, wie Sie diese Methoden verwenden, anstatt die mathematische Formel durchzugehen.

Im folgenden Beispiel stellt die x-Achse das Alter und die y-Achse die Geschwindigkeit dar. Wir haben das Alter und die Geschwindigkeit von 13 Autos registriert, als sie an einer Mautstelle vorbeifuhren. Lassen Sie uns sehen, ob die von uns gesammelten Daten in einer linearen Regression verwendet werden könnten:

Beispiel

Beginnen Sie mit dem Zeichnen eines Streudiagramms:

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

Importieren scipyund zeichnen Sie die Linie der linearen Regression:

import matplotlib.pyplot as plt
from 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ärt

Importieren Sie die benötigten Module.

In unserem Matplotlib-Tutorial erfahren Sie mehr über das Matplotlib-Modul .

In unserem SciPy-Tutorial erfahren Sie mehr über das SciPy-Modul .

import matplotlib.pyplot as plt
from scipy import stats

Erstellen Sie die Arrays, die die Werte der x- und y-Achse darstellen:

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ühren Sie eine Methode aus, die einige wichtige Schlüsselwerte der linearen Regression zurückgibt:

slope, intercept, r, p, std_err = stats.linregress(x, y)

Erstellen Sie eine Funktion, die die Werte slopeund interceptverwendet, um einen neuen Wert zurückzugeben. Dieser neue Wert stellt dar, wo auf der y-Achse der entsprechende x-Wert platziert wird:

def myfunc(x):
  return slope * x + intercept

Führen Sie jeden Wert des x-Arrays durch die Funktion. Dies führt zu einem neuen Array mit neuen Werten für die y-Achse:

mymodel = list(map(myfunc, x))

Zeichnen Sie das ursprüngliche Streudiagramm:

plt.scatter(x, y)

Zeichnen Sie die Linie der linearen Regression:

plt.plot(x, mymodel)

Zeigen Sie das Diagramm an:

plt.show()



R für Beziehung

Es ist wichtig zu wissen, wie die Beziehung zwischen den Werten der x-Achse und den Werten der y-Achse ist, wenn es keine Beziehung gibt, kann die lineare Regression nicht verwendet werden, um irgendetwas vorherzusagen.

Diese Beziehung – der Korrelationskoeffizient – ​​wird als bezeichnet r.

Der rWert reicht von -1 bis 1, wobei 0 keine Beziehung bedeutet und 1 (und -1) 100 % Beziehung bedeutet.

Python und das Scipy-Modul berechnen diesen Wert für Sie, alles, was Sie tun müssen, ist, ihn mit den x- und y-Werten zu füttern.

Beispiel

Wie gut passen meine Daten in eine lineare Regression?

from 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)

Hinweis: Das Ergebnis -0,76 zeigt, dass es eine nicht perfekte Beziehung gibt, aber es zeigt an, dass wir die lineare Regression in zukünftigen Vorhersagen verwenden könnten.


Vorhersage zukünftiger Werte

Jetzt können wir die gesammelten Informationen verwenden, um zukünftige Werte vorherzusagen.

Beispiel: Versuchen wir, die Geschwindigkeit eines 10 Jahre alten Autos vorherzusagen.

Dazu benötigen wir dieselbe myfunc()Funktion aus dem obigen Beispiel:

def myfunc(x):
  return slope * x + intercept

Beispiel

Sagen Sie die Geschwindigkeit eines 10 Jahre alten Autos voraus:

from 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)

Das Beispiel sagte eine Geschwindigkeit von 85,6 voraus, was wir auch aus dem Diagramm ablesen konnten:


Schlechte Passform?

Lassen Sie uns ein Beispiel erstellen, bei dem die lineare Regression nicht die beste Methode wäre, um zukünftige Werte vorherzusagen.

Beispiel

Diese Werte für die x- und y-Achse sollten zu einer sehr schlechten Anpassung für die lineare Regression führen:

import matplotlib.pyplot as plt
from 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 die rBeziehung?

Beispiel

Sie sollten einen sehr niedrigen rWert erhalten.

import numpy
from 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)

Das Ergebnis: 0,013 zeigt eine sehr schlechte Beziehung an und sagt uns, dass dieser Datensatz nicht für eine lineare Regression geeignet ist.