Maschinelles Lernen - Multivariate Regression

Multiple Regression (Mehrere Regressionen)

Multiple Regression ähnelt der linearen Regression, aber mit mehreren unabhängigen Werten, was bedeutet, dass wir versuchen, einen Wert auf Basis von zwei oder mehreren Variablen vorherzusagen.

Bitte sehen Sie die folgende Datenbank, die einige Informationen über Autos enthält.

Car Model Volume Weight CO2
Toyota Aygo 1000 790 99
Mitsubishi Space Star 1200 1160 95
Skoda Citigo 1000 929 95
Fiat 500 900 865 90
Mini Cooper 1500 1140 105
VW Up! 1000 929 105
Skoda Fabia 1400 1109 90
Mercedes A-Class 1500 1365 92
Ford Fiesta 1500 1112 98
Audi A1 1600 1150 99
Hyundai I20 1100 980 99
Suzuki Swift 1300 990 101
Ford Fiesta 1000 1112 99
Honda Civic 1600 1252 94
Hundai I30 1600 1326 97
Opel Astra 1600 1330 97
BMW 1 1600 1365 99
Mazda 3 2200 1280 104
Skoda Rapid 1600 1119 104
Ford Focus 2000 1328 105
Ford Mondeo 1600 1584 94
Opel Insignia 2000 1428 99
Mercedes C-Class 2100 1365 99
Skoda Octavia 1600 1415 99
Volvo S60 2000 1415 99
Mercedes CLA 1500 1465 102
Audi A4 2000 1490 104
Audi A6 2000 1725 114
Volvo V70 1600 1523 109
BMW 5 2000 1705 114
Mercedes E-Class 2100 1605 115
Volvo XC70 2000 1746 117
Ford B-Max 1600 1235 104
BMW 2 1600 1390 108
Opel Zafira 1600 1405 109
Mercedes SLK 2500 1395 120

Wir können den CO2-Ausstoß eines Autos basierend auf dem Hubraum vorherzusagen, aber durch Multivariate Regression können wir mehr Variablen wie das Gewicht des Autos einbeziehen, um die Vorhersage genauer zu machen.

Arbeitsweise

In Python haben wir Module, die diese Aufgabe erledigen können. Zunächst importieren wir das Pandas-Modul:

import pandas

Das Pandas-Modul ermöglicht es uns, csv-Dateien zu lesen und ein DataFrame-Objekt zurückzugeben.

Diese Datei dient nur zu Testzwecken und kann hier heruntergeladen werden:cars.csv

df = pandas.read_csv("cars.csv")

Dann listen Sie die unabhängigen Werte auf und benennen Sie diese Variable X.

Legen Sie die relevanten Werte in eine Variable namens y.

X = df[['Weight', 'Volume']]
y = df['CO2']

Hinweis:Normalerweise wird die Liste der unabhängigen Werte in Großbuchstaben XDie Liste der relevanten Werte wird in Kleinbuchstaben命名为 y.

Wir verwenden einige Methoden aus dem sklearn-Modul, daher müssen wir das Modul auch importieren:

from sklearn import linear_model

Im sklearn-Modul verwenden wir LinearRegression() um ein lineares Regressionsobjekt zu erstellen.

Das Objekt hat eine Methode namens fit() Die Methode, die unabhängige und abhängige Werte als Parameter nimmt und das Regressionsobjekt mit Daten, die diese Beziehung beschreiben, füllt:

regr = linear_model.LinearRegression()
regr.fit(X, y)

Jetzt haben wir einen Regressionsobjekt, das CO2-Werte basierend auf dem Gewicht und dem Hubraum des Autos vorherzusagen kann:

# Vorhersage des CO2-Ausstoßes eines Autos mit einem Gewicht von 2300kg und einem Hubraum von 1300ccm:
predictedCO2 = regr.predict([[2300, 1300]])

Beispiel

Sehen Sie sich das vollständige Beispiel an:

import pandas
from sklearn import linear_model
df = pandas.read_csv("cars.csv")
X = df[['Weight', 'Volume']]
y = df['CO2']
regr = linear_model.LinearRegression()
regr.fit(X, y)
# Vorhersage des CO2-Ausstoßes eines Autos mit einem Gewicht von 2300kg und einem Hubraum von 1300ccm:
predictedCO2 = regr.predict([[2300, 1300]])
print(predictedCO2)

Ergebnis:

[107.2087328]

Laufbeispiel

Wir prognostizieren, dass ein Auto mit einem 1,3-Liter-Motor und einem Gewicht von 2300 Kilogramm bei einer Fahrstrecke von 1 Kilometer etwa 107 Gramm Kohlenstoffdioxid freisetzt.

Koeffizient

Ein Koeffizient ist ein Faktor, der die Beziehung zwischen der unbekannten Variable beschreibt.

Zum Beispiel: Wenn x Es ist eine Variable, dann 2x Es ist x doppelt.x Es ist eine unbekannte Variable, eine Zahl 2 Es ist ein Koeffizient.

In diesem Fall können wir die Koeffizientenwerte von Gewicht im Verhältnis zu CO2 sowie die Koeffizientenwerte von Volumen im Verhältnis zu CO2 verlangen. Die Antworten, die wir erhalten, zeigen uns, was passiert, wenn wir einen der unabhängigen Werte erhöhen oder verringern.

Beispiel

Druckt die Koeffizientenwerte des Regressionsobjekts aus:

import pandas
from sklearn import linear_model
df = pandas.read_csv("cars.csv")
X = df[['Weight', 'Volume']]
y = df['CO2']
regr = linear_model.LinearRegression()
regr.fit(X, y)
print(regr.coef_)

Ergebnis:

[0.00755095 0.00780526]

Laufbeispiel

Erklärung der Ergebnisse

Das Ergebnisarray stellt die Koeffizientenwerte von Gewicht und Hubraum dar.

Weight: 0.00755095
Volume: 0.00780526

Diese Werte zeigen uns, dass sich der CO2-Ausstoß um 0.00755095g erhöht, wenn das Gewicht um 1g zunimmt.

Wenn der Motorgröße (Volumen) um 1 ccm zunimmt, erhöht sich der CO2-Ausstoß um 0.00780526g.

Ich denke, das ist eine vernünftige Annahme, aber bitte testen Sie es noch einmal!

Wir haben vorhergesagt, dass die Kohlenstoffdioxidemissionen eines Autos mit einem 1300ccm Motor und einem Gewicht von 2300 Kilogramm etwa 107 Gramm betragen werden.

Was passiert, wenn wir 1000g Gewicht hinzufügen?

Beispiel

Kopieren Sie das vorherige Beispiel, aber ändern Sie das Gewicht von 2300 auf 3300:

import pandas
from sklearn import linear_model
df = pandas.read_csv("cars.csv")
X = df[['Weight', 'Volume']]
y = df['CO2']
regr = linear_model.LinearRegression()
regr.fit(X, y)
predictedCO2 = regr.predict([[3300, 1300]])
print(predictedCO2)

Ergebnis:

[114.75968007]

Laufbeispiel

Wir haben vorhergesagt, dass ein Auto mit einem 1,3-Liter-Motor und einem Gewicht von 3,3 Tonnen etwa 115 Gramm Kohlenstoffdioxid freisetzt, wenn es 1 Kilometer fährt.

Dies zeigt, dass der Faktor von 0.00755095 korrekt ist:

107.2087328 + (1000 * 0.00755095) = 114.75968