Lineær Regresjon På Bostons Boligdatasett

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

i min forrige blogg dekket jeg grunnleggende om lineær regresjon og gradient descent. For å få praktisk lineær regresjon vil vi ta et originalt datasett og bruke konseptene vi har lært.

Vi tar Boligdatasettet som inneholder informasjon om forskjellige hus i Boston. Disse dataene var opprinnelig en del AV Uci Machine Learning Repository og har blitt fjernet nå. Vi kan også få tilgang til disse dataene fra scikit-learn-biblioteket. Det er 506 prøver og 13 funksjonsvariabler i dette datasettet. Målet er å forutsi verdien av prisene på huset ved hjelp av de gitte funksjonene.

Så la oss komme i gang.

først vil vi importere de nødvendige bibliotekene.

deretter laster vi inn husdataene frascikit-learn biblioteket og forstår det.

vi skriver ut verdien av boston_dataset for å forstå hva den inneholder. print(boston_dataset.keys()) gir

dict_keys()
  • data: inneholder informasjon for ulike hus
  • target: prisene på huset
  • feature_names: navn på funksjonene
  • DESCR: beskriver datasettet

for å vite mer om funksjonene bruk boston_dataset.DESCR beskrivelsen av alle funksjonene er gitt nedenfor:

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

prisene på huset angitt av variabelen MEDV er vår målvariabel og de resterende er funksjonsvariablene basert på hvilke vi vil forutsi verdien av et hus.

vi vil nå laste dataene inn i en pandas dataframe ved hjelp av pd.DataFrame. Vi skriver deretter ut de første 5 radene av dataene ved hjelp av head()

vi kan se at målverdien MEDV mangler fra dataene. Vi lager en ny kolonne med målverdier og legger den til dataframe.

data preprosessering

etter at dataene er lastet inn, er det en god praksis Å se om det mangler verdier i dataene. Vi teller antall manglende verdier for hver funksjon ved hjelp av isnull()

det er imidlertid Ingen manglende verdier i dette datasettet som vist nedenfor.

utforskende dataanalyse

utforskende dataanalyse er et svært viktig skritt før du trener modellen. I denne delen vil vi bruke noen visualiseringer for å forstå forholdet mellom målvariabelen og andre funksjoner.

La oss først plotte fordelingen av målvariabelen MEDV. Vi vil brukedistplot – funksjonen fraseaborn biblioteket.

vi ser at verdiene til MEDV distribueres normalt med få avvik.

Deretter lager vi en korrelasjonsmatrise som måler de lineære forholdene mellom variablene. Korrelasjonsmatrisen kan dannes ved å bruke corr – funksjonen fra pandas dataframe-biblioteket. Vi vil bruke heatmap funksjonen fra seaborn library for å plotte korrelasjonsmatrisen.

korrelasjonskoeffisienten varierer fra -1 til 1. Hvis verdien er nær 1, betyr det at det er en sterk positiv korrelasjon mellom de to variablene. Når det er nær -1, har variablene en sterk negativ korrelasjon.

Observasjoner:

  • for å passe til en lineær regresjonsmodell velger vi de funksjonene som har høy korrelasjon med målvariabelen MEDV. Ved å se på korrelasjonsmatrisen kan vi se at RM har en sterk positiv korrelasjon med MEDV (0.7) hvor as LSTAT har en høy negativ korrelasjon med MEDV(-0.74).
  • et viktig punkt i å velge funksjoner for en lineær regresjonsmodell er å sjekke for multi-co-linearitet. Funksjonene RADTAX har en korrelasjon på 0,91. Disse har parene er sterkt korrelert til hverandre. Vi bør ikke velge begge disse funksjonene sammen for å trene modellen. Sjekk dette for en forklaring. Det samme gjelder for funksjonene DIS og AGE som har en korrelasjon på -0,75.

basert på de ovennevnte observasjonene vil vi RM og LSTAT som våre funksjoner. La oss se hvordan disse funksjonene varierer med MEDV.

observasjoner:

  • prisene øker etter hvert som verdien av rm øker lineært. Det er få outliers og dataene ser ut til å være avkortet til 50.
  • prisene har en tendens til å synke med en økning I LSTAT. Selv om det ikke ser ut til å følge nøyaktig en lineær linje.

Forbereder dataene for trening av modellen

vi setter sammen LSTAT og RM kolonner ved hjelp av np.c_ levert av numpy-biblioteket.

Splitting av dataene i trenings-og testsett

deretter deler vi dataene i trenings-og testsett. Vi trener modellen med 80% av prøvene og tester med de resterende 20%. Vi gjør dette for å vurdere modellens ytelse på usett data. For å dele dataene bruker vitrain_test_split funksjon levert av scikit-learn library. Vi endelig skrive ut størrelsene på vår trening og test sett for å kontrollere om splitting har skjedd riktig.

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

Trening og testing av modellen

vi bruker scikit-learn ‘ s LinearRegressionfor å trene vår modell på både trenings-og testsett.

modellevaluering

vi vil evaluere vår modell ved HJELP AV RMSE og 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

dette er godt å begynne med. I de kommende bloggene vil vi se på måter å øke modellens ytelse på.

Den komplette Jupyter-Notatboken finner du her.

Konklusjon

i denne historien brukte vi begrepene lineær regresjon på Boston housing datasett. Jeg vil anbefale å prøve ut andre datasett også.

Her er noen steder du kan se etter data

  • https://www.kaggle.com/datasets
  • https://toolbox.google.com/datasetsearch

Takk For At Du Leste!!

i neste del av denne serien vil vi dekke Polynomregresjon. Se denne plassen for mer.

Related Posts

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *