lineaire regressie op Boston Housing Dataset

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

in mijn vorige blog heb ik de basisprincipes van lineaire regressie en gradiëntafdaling behandeld. Om hands-on lineaire regressie te krijgen zullen we een originele dataset nemen en de concepten die we hebben geleerd toepassen.

We nemen de Housing dataset die informatie bevat over verschillende huizen in Boston. Deze gegevens waren oorspronkelijk onderdeel van UCI Machine Learning Repository en zijn nu verwijderd. We kunnen ook toegang krijgen tot deze gegevens vanuit de scikit-learn bibliotheek. Er zijn 506 steekproeven en 13 functievariabelen in deze dataset. Het doel is om de waarde van de prijzen van het huis te voorspellen met behulp van de gegeven functies.

dus laten we beginnen.

eerst zullen we de vereiste bibliotheken importeren.

vervolgens laden we de housing data uit de scikit-learn bibliotheek en begrijpen het.

we printen de waarde van de boston_dataset om te begrijpen wat het bevat. print(boston_dataset.keys()) geeft

dict_keys()
  • data: bevat de informatie voor verschillende huizen
  • doel: de prijzen van het huis
  • feature_names: de namen van de functies
  • DESCR: beschrijft de dataset

om meer Te weten over de functies gebruiken boston_dataset.DESCR De beschrijving van alle functies wordt hieronder gegeven:

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

de prijzen van het huis aangegeven door de variabele MEDV is onze doelvariabele en de resterende zijn de feature variabelen op basis waarvan we de waarde van een huis zullen voorspellen.

We zullen nu de gegevens in een panda-dataframe laden met pd.DataFrame. Vervolgens hebben We de eerste 5 rijen van de gegevens met behulp van head()

We kunnen zien dat de streefwaarde MEDV ontbreekt in de gegevens. We maken een nieuwe kolom met doelwaarden en voegen deze toe aan het dataframe.

data preprocessing

na het laden van de gegevens is het een goede gewoonte om te zien of er ontbrekende waarden in de gegevens zijn. We tellen het aantal ontbrekende waarden voor elke functie met isnull()

Er zijn echter geen ontbrekende waarden in deze dataset zoals hieronder getoond.

verkennende gegevensanalyse

verkennende gegevensanalyse is een zeer belangrijke stap voor de opleiding van het model. In deze sectie zullen we enkele visualisaties gebruiken om de relatie van de doelvariabele met andere functies te begrijpen.

laten we eerst de verdeling van de doelvariabele plotten MEDV. We zullen de distplot functie van de seaborn bibliotheek gebruiken.

We zien dat de waarden van MEDV normale verdeling volgen met enkele uitschieters.

vervolgens maken we een correlatiematrix die de lineaire relaties tussen de variabelen meet. De correlatiematrix kan worden gevormd door gebruik te maken van de functie corr uit de panda dataframe bibliotheek. We zullen de functie heatmap uit de Seaborn-bibliotheek gebruiken om de correlatiematrix te plotten.

De correlatiecoëfficiënt varieert van -1 tot 1. Als de waarde dicht bij 1 ligt, betekent dit dat er een sterke positieve correlatie is tussen de twee variabelen. Wanneer het dicht bij -1 ligt, hebben de variabelen een sterke negatieve correlatie.

waarnemingen:

  • om in een lineair regressiemodel te passen, selecteren we die functies die een hoge correlatie hebben met onze doelvariabele MEDV. Door te kijken naar de correlatiematrix kunnen we zien dat RM een sterke positieve correlatie heeft met MEDV (0.7) waar als LSTAT een hoge negatieve correlatie heeft met MEDV(-0.74).
  • een belangrijk punt bij het selecteren van functies voor een lineair regressiemodel is het controleren op multi-co-lineariteit. De eigenschappen RADTAX hebben een correlatie van 0,91. Deze kenmerken paren zijn sterk gecorreleerd aan elkaar. We moeten deze beide functies niet samen selecteren voor het trainen van het model. Controleer dit voor een uitleg. Hetzelfde geldt voor de functies DIS en AGE die een correlatie hebben van -0,75.

Op basis van de bovenstaande waarnemingen zullen we RM en LSTAT als onze functies. Met behulp van een scatter plot laten we eens kijken hoe deze functies variëren met MEDV.

Opmerkingen:

  • De prijzen te verhogen als de waarde van RM lineair toeneemt. Er zijn weinig uitschieters en de gegevens lijken te zijn afgetopt op 50.de prijzen dalen meestal met een stijging van LSTAT. Hoewel het niet lijkt te volgen precies een lineaire lijn.

de gegevens voorbereiden voor het trainen van het model

we voegen de kolommen LSTAT en RM samen met np.c_ die door de numpy-bibliotheek worden geleverd.

de gegevens splitsen in trainings-en testsets

vervolgens splitsen we de gegevens op in trainings-en testsets. We trainen het model met 80% van de monsters en testen met de resterende 20%. We doen dit om de prestaties van het model op ongeziene data te beoordelen. Om de gegevens te splitsen gebruiken we de functie train_test_split van de scikit-learn library. Uiteindelijk printen we de maten van onze trainings-en testset om te controleren of de splitsing correct heeft plaatsgevonden.

(404, 2) 
(102, 2)
(404,)
(102,)

Training en testen het model

we gebruiken scikit-learn ‘ s LinearRegression om ons model te trainen op zowel de trainings-als testsets.

Model evaluatie

We zullen ons model evalueren met behulp van RMSE en R2-score.

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

Dit is goed om mee te beginnen. In de komende blogs zullen we kijken naar manieren om de prestaties van het model te verhogen.

het volledige Jupyter Notebook is hier te vinden.

conclusie

In dit verhaal hebben we de concepten van lineaire regressie toegepast op de Boston housing dataset. Ik zou aanraden om ook andere datasets uit te proberen.

Hier zijn een paar plaatsen waar u naar gegevens kunt zoeken

  • https://www.kaggle.com/datasets
  • https://toolbox.google.com/datasetsearch
  • https://archive.ics.uci.edu/ml/datasets.html

Bedankt voor het lezen!!

in het volgende deel van deze serie zullen we polynomiale regressie behandelen. Kijk naar deze ruimte voor meer.

Related Posts

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *