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 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
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()
print(boston)
Sehen Sie sich zunächst den Inhalt an, um einen Überblick über die Daten zu erhalten.
print(boston.DESCR)
Lesen Sie die Beschreibung des Boston-Datensatzes. 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 |
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.
#Geben Sie den Spaltennamen an
boston_df.columns = boston.feature_names
print(boston_df)
Geben Sie bostons feature_names
als boston_dfs Spalten
an.
#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.
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)
#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.
model = linear_model.LinearRegression()
model.fit(X,Y)
model.coef_
"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
model.intercept_
model.score(X, Y)
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.
#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")
Der Variablenname "multi_lreg" ist eine Abkürzung für Multiple Linear Regression Analysis.
multi_lreg = linear_model.LinearRegression()
multi_lreg.fit(X_train, Y_train)
multi_lreg.fit(X_train, Y_train)
multi_lreg.score(X_test,Y_test)
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.