Lineare Regression auf Boston Gehäuse Datensatz

Credits: http://www.wbur.org/radioboston/2013/09/18/bostons-housing-challenge

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, dass RM eine starke positive Korrelation mit MEDV (0,7) aufweist, wobei as LSTAT eine hohe negative Korrelation mit MEDV(-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 RADTAX 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 Funktionen DIS und AGE, 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.

Related Posts

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.