
In meinem vorherigen Blog habe ich die Grundlagen der linearen Regression und des Gradientenabstiegs behandelt. Um eine praktische lineare Regression zu erhalten, nehmen wir einen Originaldatensatz und wenden die erlernten Konzepte an.
Wir nehmen den Wohnungsdatensatz, der Informationen über verschiedene Häuser in Boston enthält. Diese Daten waren ursprünglich Teil des UCI Machine Learning Repository und wurden nun entfernt. Wir können auch auf diese Daten aus der scikit-Learn-Bibliothek zugreifen. Dieser Datensatz enthält 506 Stichproben und 13 Merkmalsvariablen. Ziel ist es, den Wert der Preise des Hauses anhand der gegebenen Merkmale vorherzusagen.
Also fangen wir an.
Zuerst importieren wir die benötigten Bibliotheken.
Als nächstes laden wir die Gehäusedaten aus der scikit-learn
Bibliothek und verstehen sie.
Wir drucken den Wert des boston_dataset
um zu verstehen, was es enthält. print(boston_dataset.keys())
gibt
dict_keys()
- Daten: enthält die Informationen für verschiedene Häuser
- Ziel: Preise des Hauses
- feature_names: Namen der Merkmale
- DESCR: beschreibt den Datensatz
Um mehr über die Merkmale zu erfahren, verwenden Sie boston_dataset.DESCR
Die Beschreibung aller Funktionen ist unten angegeben:
CRIM: Per capita crime rate by town
ZN: Proportion of residential land zoned for lots over 25,000 sq. ft
INDUS: Proportion of non-retail business acres per town
CHAS: Charles River dummy variable (= 1 if tract bounds river; 0 otherwise)
NOX: Nitric oxide concentration (parts per 10 million)
RM: Average number of rooms per dwelling
AGE: Proportion of owner-occupied units built prior to 1940
DIS: Weighted distances to five Boston employment centers
RAD: Index of accessibility to radial highways
TAX: Full-value property tax rate per $10,000
PTRATIO: Pupil-teacher ratio by town
B: 1000(Bk — 0.63)², where Bk is the proportion of by town
LSTAT: Percentage of lower status of the population
MEDV: Median value of owner-occupied homes in $1000s
Die durch die Variable MEDV
angegebenen Preise des Hauses sind unsere Zielvariable und die verbleibenden sind die Merkmalsvariablen, auf deren Grundlage wir den Wert eines Hauses vorhersagen.
Wir werden die Daten jetzt mit pd.DataFrame
in einen Pandas-Datenrahmen laden. Wir drucken dann die ersten 5 Zeilen der Daten mit head()

Wir können sehen, dass der Zielwert MEDV
in den Daten fehlt. Wir erstellen eine neue Spalte mit Zielwerten und fügen sie dem Datenrahmen hinzu.
Datenvorverarbeitung
Nach dem Laden der Daten sollten Sie prüfen, ob die Daten fehlende Werte enthalten. Wir zählen die Anzahl der fehlenden Werte für jedes Feature mit isnull()
In diesem Datensatz fehlen jedoch keine Werte, wie unten gezeigt.

Explorative Datenanalyse
Explorative Datenanalyse ist ein sehr wichtiger Schritt vor dem Training des Modells. In diesem Abschnitt werden wir einige Visualisierungen verwenden, um die Beziehung der Zielvariablen zu anderen Features zu verstehen.
Zeichnen wir zuerst die Verteilung der Zielvariablen MEDV
. Wir werden die distplot
Funktion aus der seaborn
Bibliothek verwenden.

Wir sehen, dass die Werte von MEDV
normal mit wenigen Ausreißern verteilt sind.
Als nächstes erstellen wir eine Korrelationsmatrix, die die linearen Beziehungen zwischen den Variablen misst. Die Korrelationsmatrix kann mithilfe der Funktion corr
aus der pandas Dataframe-Bibliothek gebildet werden. Wir werden die heatmap
-Funktion aus der Seaborn-Bibliothek verwenden, um die Korrelationsmatrix zu zeichnen.

Der Korrelationskoeffizient reicht von -1 bis 1. Wenn der Wert nahe bei 1 liegt, bedeutet dies, dass eine starke positive Korrelation zwischen den beiden Variablen besteht. Wenn es nahe bei -1 liegt, haben die Variablen eine starke negative Korrelation.
Beobachtungen:
- Um ein lineares Regressionsmodell anzupassen, wählen wir die Merkmale aus, die eine hohe Korrelation mit unserer Zielvariablen haben
MEDV
. Wenn wir uns die Korrelationsmatrix ansehen, können wir sehen, dassRM
eine starke positive Korrelation mitMEDV
(0,7) aufweist, wobei asLSTAT
eine hohe negative Korrelation mitMEDV
(-0,74) aufweist. - Ein wichtiger Punkt bei der Auswahl von Features für ein lineares Regressionsmodell ist die Überprüfung auf Multi-Ko-Linearität. Die Merkmale
RAD
TAX
haben eine Korrelation von 0,91. Diese Merkmalspaare sind stark miteinander korreliert. Wir sollten diese beiden Funktionen nicht zusammen auswählen, um das Modell zu trainieren. Überprüfen Sie dies für eine Erklärung. Gleiches gilt für die FunktionenDIS
undAGE
, die eine Korrelation von -0,75 aufweisen.
Basierend auf den obigen Beobachtungen werden wir RM
und LSTAT
als unsere Funktionen. Sehen wir uns anhand eines Streudiagramms an, wie sich diese Funktionen mit MEDV
.

Beobachtungen:
- Die Preise steigen, wenn der Wert von RM linear ansteigt. Es gibt nur wenige Ausreißer und die Daten scheinen auf 50 begrenzt zu sein.
- Die Preise sinken tendenziell mit einem Anstieg von LSTAT. Obwohl es nicht genau einer linearen Linie zu folgen scheint.
Vorbereiten der Daten für das Training des Modells
Wir verketten die LSTAT
und RM
Spalten mit np.c_
, die von der numpy-Bibliothek bereitgestellt werden.
Aufteilen der Daten in Trainings- und Testsets
Als nächstes teilen wir die Daten in Trainings- und Testsets auf. Wir trainieren das Modell mit 80% der Proben und testen mit den restlichen 20%. Wir tun dies, um die Leistung des Modells anhand unsichtbarer Daten zu bewerten. Um die Daten aufzuteilen, verwenden wir die Funktion train_test_split
, die von der scikit-learn-Bibliothek bereitgestellt wird. Wir drucken schließlich die Größen unseres Trainings- und Testsets, um zu überprüfen, ob die Aufteilung ordnungsgemäß erfolgt ist.
(404, 2)
(102, 2)
(404,)
(102,)
Training und Testen des Modells
Wir verwenden scikit-learns LinearRegression
, um unser Modell sowohl auf dem Trainings- als auch auf dem Testset zu trainieren.
Modellbewertung
Wir werden unser Modell mit RMSE und R2-Score bewerten.
The model performance for training set
--------------------------------------
RMSE is 5.6371293350711955
R2 score is 0.6300745149331701 The model performance for testing set
--------------------------------------
RMSE is 5.137400784702911
R2 score is 0.6628996975186952
Dies ist ein guter Anfang. In den kommenden Blogs werden wir nach Möglichkeiten suchen, die Leistung des Modells zu steigern.
Das komplette Jupyter Notebook finden Sie hier.
Fazit
In dieser Geschichte haben wir die Konzepte der linearen Regression auf den Boston Housing Dataset angewendet. Ich würde empfehlen, auch andere Datensätze auszuprobieren.
Hier sind ein paar Orte, an denen Sie nach Daten suchen können
- https://www.kaggle.com/datasets
- https://toolbox.google.com/datasetsearch
- https://archive.ics.uci.edu/ml/datasets.html
Danke fürs Lesen!!
Im nächsten Teil dieser Serie werden wir die Polynomregression behandeln. Beobachten Sie diesen Raum für mehr.