Lineare Regression
Die lineare Regression ist ein leistungsfähiges statistisches Werkzeug, das weit verbreitet im maschinellen Lernen und in der prädiktiven Modellierung eingesetzt wird. Sie findet die bestmögliche Anpassungslinie zwischen einer abhängigen Variable und einer oder mehreren unabhängigen Variablen, indem sie die Summe der quadrierten Fehler zwischen vorhergesagten und tatsächlichen Werten minimiert.
In diesem Leitfaden zeigen wir, wie man lineare Regression in Python mit scikit-learn implementiert. Wir beginnen mit einer kurzen Einführung in die Technik und ihre Anwendungen und führen anschließend durch eine vollständige Implementierung.
Einführung in die lineare Regression
Die lineare Regression modelliert die Beziehung zwischen einer abhängigen Variable und einer oder mehreren unabhängigen Variablen. Sie geht von einer linearen Beziehung aus, was bedeutet, dass Änderungen in der abhängigen Variable proportional zu Änderungen in den unabhängigen Variablen sind. Sie wird weit verbreitet in Finanzen, Wirtschaft, Marketing und Ingenieurwesen eingesetzt, um Trends vorherzusagen und Entscheidungsprozesse zu unterstützen.
Es gibt zwei Haupttypen: die einfache lineare Regression (eine unabhängige Variable) und die multiple lineare Regression (zwei oder mehr unabhängige Variablen). Dieser Leitfaden konzentriert sich auf die multiple lineare Regression.
Implementierung der linearen Regression mit Scikit-learn
Scikit-learn ist eine beliebte Python-Bibliothek für maschinelles Lernen, die robuste Tools für Datenanalyse und Modellierung bereitstellt. Sie enthält ein dediziertes Modul für die lineare Regression, das die Implementierung von Modellen vereinfacht.
Schritt 1: Erforderliche Bibliotheken importieren
Bevor wir die lineare Regression mit scikit-learn implementieren können, müssen wir die erforderlichen Bibliotheken importieren. Wir verwenden die folgenden Bibliotheken:
Importieren Sie die erforderlichen Bibliotheken, um lineare Regression mit scikit-learn in Python zu implementieren:
import pandas as pd
import numpy as np
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error, r2_scoreSchritt 2: Dataset laden
Der nächste Schritt besteht darin, das Dataset zu laden, das wir zum Trainieren unseres linearen Regressionsmodells verwenden werden. Wir verwenden das California Housing-Dataset, das der moderne Standard für Regressionsaufgaben ist.
Hinweis: Das Boston Housing-Dataset wurde aus scikit-learn 1.4 aufgrund ethischer Bedenken entfernt. Wir verwenden stattdessen das California Housing-Dataset.
Laden Sie das Dataset, das wir zum Trainieren unseres linearen Regressionsmodells verwenden, mit fetch_california_housing in Python:
from sklearn.datasets import fetch_california_housing
california = fetch_california_housing()
california_df = pd.DataFrame(california.data, columns=california.feature_names)
california_df['MedHouseVal'] = california.targetSchritt 3: Dataset erkunden
Bevor wir unser lineares Regressionsmodell trainieren können, müssen wir das Dataset erkunden, um seine Struktur und Merkmale zu verstehen. Dies können wir tun, indem wir das Dataset in einen Pandas-DataFrame konvertieren und die Funktion head() verwenden, um die ersten Zeilen der Daten anzuzeigen.
Konvertieren Sie das Dataset in einen Pandas-DataFrame in Python:
california_df.head()Schritt 4: Daten für das Training vorbereiten
Der nächste Schritt besteht darin, die Daten für das Training unseres linearen Regressionsmodells vorzubereiten. Wir verwenden die Merkmale AveRooms und AveBedrms als unsere unabhängigen Variablen und das Merkmal MedHouseVal als unsere abhängige Variable.
Bereiten Sie die Daten für das Training unseres multiplen linearen Regressionsmodells in Python vor:
X = california_df[['AveRooms', 'AveBedrms']]
y = california_df['MedHouseVal']Schritt 5: Daten in Trainings- und Testdaten aufteilen
Um die Leistung unseres linearen Regressionsmodells zu bewerten, müssen wir die Daten in Trainings- und Testdaten aufteilen. Wir verwenden die Funktion train_test_split() aus scikit-learn, um die Daten aufzuteilen.
Teilen Sie die Daten in Trainings- und Testdaten in Python auf:
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)Schritt 6: Lineares Regressionsmodell trainieren
Der nächste Schritt besteht darin, das lineare Regressionsmodell mit dem Trainingsdatensatz zu trainieren. Wir verwenden die Methode fit() der Klasse LinearRegression, um das Modell zu trainieren.
Trainieren Sie das lineare Regressionsmodell mit dem Trainingsdatensatz in Python:
regressor = LinearRegression()
regressor.fit(X_train, y_train)Schritt 7: Vorhersagen für die Testdaten treffen
Sobald das Modell trainiert ist, können wir es verwenden, um Vorhersagen für die Testdaten zu treffen. Wir verwenden die Methode predict() der Klasse LinearRegression, um Vorhersagen zu treffen.
Sobald das Modell trainiert ist, können wir es verwenden, um Vorhersagen für die Testdaten in Python zu treffen:
y_pred = regressor.predict(X_test)Schritt 8: Leistung des Modells bewerten
Um die Leistung unseres linearen Regressionsmodells zu bewerten, verwenden wir zwei Metriken: den mittleren quadratischen Fehler (MSE) und das Bestimmtheitsmaß (R²). Wir können diese Metriken mit den Funktionen mean_squared_error() und r2_score() aus scikit-learn berechnen.
Berechnen Sie MSE und R² in Python:
mse = mean_squared_error(y_test, y_pred)
r2 = r2_score(y_test, y_pred)
print('Mean Squared Error:', mse)
print('Coefficient of Determination:', r2)Schritt 9: Ergebnisse visualisieren
Abschließend können wir die Ergebnisse unseres linearen Regressionsmodells visualisieren, indem wir die Regressionslinie und die tatsächlichen Datenpunkte plotten. Wir können die Bibliothek matplotlib verwenden, um das Diagramm zu erstellen.
Visualisieren Sie die Ergebnisse unseres linearen Regressionsmodells, indem Sie die Regressionslinie und die tatsächlichen Datenpunkte in Python plotten:
import matplotlib.pyplot as plt
plt.scatter(X_test['AveRooms'], y_test, color='black')
plt.plot(X_test['AveRooms'], y_pred, color='blue', linewidth=3)
plt.title('Linear Regression')
plt.xlabel('Average Rooms per Dwelling')
plt.ylabel('Median House Value (in $100,000s)')
plt.show()Fazit
In diesem Leitfaden haben wir gezeigt, wie man lineare Regression in Python mit scikit-learn implementiert. Wir haben das Importieren von Bibliotheken, das Laden und Erkunden eines Datasets, das Vorbereiten von Merkmalen, das Aufteilen von Daten, das Trainieren des Modells, das Treffen von Vorhersagen, das Bewerten der Leistung und das Visualisieren der Ergebnisse behandelt. Diese Pipeline bietet eine solide Grundlage für den Aufbau und die Bereitstellung von Regressionsmodellen in Ihren eigenen maschinellen Lernprojekten.