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

Hier lernen Sie eine lineare ** multiple Regressionsanalyse **, die sich mit drei oder mehr Variablen befasst. Lassen Sie uns den Immobilienpreis von Boston, einer großen Stadt im Nordosten von Massachusetts in den USA, anhand verschiedener erklärender Variablen analysieren.

** ⑴ 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 der Bibliothek für maschinelles Lernen-Lineares Modell des Lernens
from sklearn import linear_model

** ⑵ Daten lesen **

Lesen Sie einen der Datensätze "Boston House Prices Dataset", der mit scikit-learn geliefert wird, und speichern Sie ihn als Variable Boston.

from sklearn.datasets import load_boston
boston = load_boston()

** ⑶ Überprüfen Sie den Inhalt der Daten und verarbeiten Sie sie zur Analyse **

print(boston)

Sehen Sie sich zunächst den Inhalt an, um einen Überblick über die Daten zu erhalten. 002_0201_001.PNG

print(boston.DESCR)

Lesen Sie die Beschreibung des Boston-Datensatzes. 002_0201_002.PNG Der Datensatz enthält 13 Elemente als erklärende Variablen und 1 Element als objektive Variablen.

Variablennamen Ursprüngliches Wort Definition
CRIM crime rate Pro-Kopf-Kriminalitätsrate nach Städten
ZN zone 25,Prozentsatz der Wohngebiete über 000 Quadratfuß
INDUS industry Prozentsatz der Nichteinzelhandelsfläche (Produktionsfläche) pro Stadt
CHAS Charles River Charles River Dummy-Variable (1, wenn das Gebiet an den Fluss grenzt, sonst 0)
NOX nitric oxides Stickstoffmonoxidkonzentration (1 von 10 Millionen)
RM rooms Durchschnittliche Anzahl der Zimmer pro Einheit
AGE ages Prozentsatz der Häuser, die vor 1940 gebaut wurden
DIS distances Gewichtete Entfernung zu 5 Beschäftigungszentren in Boston
RAD radial highways Zugänglichkeitsindex zu Autobahnen
TAX tax rate 10,Steuersatz für Sachanlagen pro 000 USD
PTRATIO pupil-teacher ratio Schüler / Lehrer-Verhältnis nach Stadt
B blacks Prozentsatz der Schwarzen nach Stadt
LSTAT lower status Prozentsatz der Unterschicht in der Bevölkerung
MEDV median value Durchschnittliches Wohneigentum im Bereich von 1000 USD

** ⑷ Daten in Pandas Datenrahmen konvertieren **

boston_df = pd.DataFrame(boston.data)
print(boston_df)

Es heißt [506 Zeilen x 13 Spalten], und die Form der Daten beträgt 506 Zeilen x 13 Spalten, dh die Anzahl der Stichproben beträgt 506 für 13 Variablen. 002_0201_003.PNG

** ⑸ Geben Sie den Spaltennamen an und fügen Sie die Zielvariable hinzu **

#Geben Sie den Spaltennamen an
boston_df.columns = boston.feature_names
print(boston_df)

Geben Sie bostons feature_names als boston_dfs Spalten an. 002_0201_004.PNG

#Zielvariable hinzufügen
boston_df['PRICE'] = pd.DataFrame(boston.target)
print(boston_df)

Konvertieren Sie die Boston-Daten target in einen Pandas-Datenrahmen und speichern Sie sie in boston_df mit dem Spaltennamen PRICE. Die Zielvariable "PRICE" wird in die Spalte ganz rechts eingefügt. 002_0201_005.PNG

** Grundlegende Syntax für Scikit-Learn </ font> **

Von nun an werden wir mit scikit-learn eine multiple Regressionsanalyse durchführen, aber hier ist das Verfahren. ① Erstellen Sie die Modellquelle (Instanz). Modellvariablenname = LinearRegression () (2) Erstellen Sie ein Modell basierend auf der erklärenden Variablen X und der Zielvariablen Y. Modellvariable name.fit (X, Y) ③ Berechnen Sie den Regressionskoeffizienten anhand des erstellten Modells Modellvariable name.coef_ ④ Berechnen Sie den Schnitt mit dem erstellten Modell Modellvariablenname.intercept_ ⑤ Berechnen Sie den Entscheidungskoeffizienten, um die Genauigkeit des Modells zu erhalten Modellvariable name.score (X, Y)

** ⑹ Erklärende Variablen und objektive Variablen erstellen **

#Löschen Sie nur die Zielvariable und speichern Sie sie in Variable X.
X = boston_df.drop("PRICE", axis=1)
#Extrahieren Sie nur die Zielvariable und speichern Sie sie in der Variablen Y.
Y = boston_df["PRICE"]
print(X)
print(Y)

Löschen Sie die Spalte des Datenrahmens, indem Sie das Argument "(" Spaltenname ", Achse = 1)" in der Funktion "drop" angeben. Darüber hinaus wird die Spalte des Datenrahmens durch "Datenrahmenname [" Spaltenname "]" angegeben, extrahiert und in der Variablen Y gespeichert. 002_0201_006.PNG

** ⑺ Instanz erstellen ① **

model = linear_model.LinearRegression()

** ⑻ Modell erstellen ② **

model.fit(X,Y)

** ⑼ Berechnen Sie den Regressionskoeffizienten ③ **

model.coef_

002_0201_007.PNG "coef_" bedeutet Koeffizient. Da der Koeffizient etwas schwer zu verstehen ist, konvertieren Sie ihn in einen Datenrahmen, um die Anzeige zu erleichtern.

#Speichern Sie den Wert des Koeffizienten im variablen Koeffizienten
coefficient = model.coef_
#In Datenrahmen konvertieren und Spalten- und Indexnamen angeben
df_coefficient = pd.DataFrame(coefficient,
                              columns=["Koeffizient"],
                              index=["Kriminalrate", "Wohngrundstück Rate", "Herstellungsverhältnis", "Charles River", "Stickstoffmonoxidkonzentration", 
                                     "Durchschnittliche Anzahl der Zimmer", "Wohneigentumsquote", "Arbeitsamt", "Autobahn", "Steuersatz für Sachanlagen", 
                                     "Schüler / Lehrer-Verhältnis", "Schwarzwert", "Unteres Klassenverhältnis"])
df_coefficient

002_0201_008.PNG

** ⑽ Berechnen Sie den Abschnitt ④ **

model.intercept_

002_0201_009.PNG

** ⑾ Berechnen Sie den Entscheidungskoeffizienten und überprüfen Sie die Genauigkeit ⑤ **

model.score(X, Y)

002_0201_010.PNG

** Kreuzvalidierung </ font> **

Es gibt ein Konzept namens Kreuzvalidierung als Methode zur Überprüfung der Genauigkeit des Modells, dh der Gültigkeit der Analyse selbst. In den meisten Fällen wird die Stichprobe zufällig in zwei Gruppen aufgeteilt, eine Gruppe wird zum Erstellen eines Modells verwendet und die verbleibende eine Gruppe wird zum Testen des Modells verwendet. Ersteres wird als Trainingsdaten und letzteres als Testdaten bezeichnet. Jetzt bietet scikit-learn eine Methode zum Aufteilen von Trainingsdaten und Testdaten. sklearn.model_selection.train_test_split Es gibt keine feste Regel für das Verhältnis von Training und Test. Wenn Sie jedoch das Argument "train_test_split" nicht angeben, wird ein Viertel, dh 25% aller Stichproben, als Testdaten aufgeteilt.

** ➊ Probe teilen **

#sklearn Zug_test_Split-Methode importieren
from sklearn.model_selection import train_test_split
#Variable X.,Teilen Sie Y für Training und Test
X_train, X_test, Y_train, Y_test = train_test_split(X,Y)

Lassen Sie uns den Inhalt jeder der Variablen X zum Training und Testen überprüfen.

print("Trainingsdaten für Variable x:", X_train, sep="\n")
print("Testdaten für Variable x:", X_test, sep="\n")

002_0201_011.PNG

** ➋ Instanz erstellen ① **

Der Variablenname "multi_lreg" ist eine Abkürzung für Multiple Linear Regression Analysis.

multi_lreg = linear_model.LinearRegression()

** ➌ Erstellen Sie ein Modell mit Trainingsdaten ② **

multi_lreg.fit(X_train, Y_train)

** ➍ Berechnen Sie den Entscheidungskoeffizienten in Trainingsdaten ⑤ **

multi_lreg.fit(X_train, Y_train)

002_0201_012.PNG

** ➎ Berechnen Sie den Entscheidungskoeffizienten in den Testdaten ⑤ **

multi_lreg.score(X_test,Y_test)

002_0201_013.PNG Ein Paar Training und Tests, die durch "bekannte Daten" und "unbekannte Daten" ersetzt werden können. Wenn Sie ein Modell mit den bereits vorhandenen Daten erstellen und das Modell auf die neu erhaltenen Daten anwenden, wie gut funktioniert es? Die zu analysierenden Daten sind immer ein Teil des Ganzen, entweder in der Vergangenheit oder in der Gegenwart. Wir analysieren jedoch nichts, nur um die aktuelle Situation zu bestätigen, sondern sollten von dort aus das Ziel haben, "vorauszulesen" und "die Zukunft vorauszusehen". In diesem Sinne wird, wenn der Entscheidungskoeffizient niedrig ist, die Genauigkeit des Modells selbst angezweifelt, aber je höher es ist, desto besser. Zu teuer zu sein ist eher ein Problem. Ein hoher Entscheidungsfaktor, dh ein kleiner Rest (Fehler), bedeutet, dass das Modell zu den zu analysierenden Daten passt. Wenn es zu stark passt, kann der Entscheidungsfaktor sinken, wenn er auf die neu erhaltenen Daten angewendet wird. Dies ist das sogenannte "Overlearning" -Problem.


Um zu verstehen, wie die Berechnung der multiplen Regressionsanalyse funktioniert, führen wir als nächstes eine multiple Regressionsanalyse durch, ohne das praktische Scikit-Learn zu verwenden.

Recommended Posts