Linear Regression on Boston Housing data

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

edellisessä blogissani käsittelin lineaarisen regression ja gradienttilaskun perusteita. Saada käytännön lineaarinen regressio otamme alkuperäisen aineiston ja soveltaa käsitteitä, jotka olemme oppineet.

otamme Asuntoaineiston, joka sisältää tietoa Bostonin eri taloista. Nämä tiedot olivat alun perin osa UCI Machine Learning Repository ja on poistettu nyt. Voimme käyttää näitä tietoja myös scikit-learn-kirjastosta. Aineistossa on 506 näytettä ja 13 ominaisuusmuuttujaa. Tavoitteena on ennustaa talon hintojen arvo annettujen ominaisuuksien avulla.

joten aloitetaan.

ensin tuomme tarvittavat kirjastot.

seuraavaksi Ladataan scikit-learn kirjasto ja ymmärretään se.

tulostamme boston_dataset ymmärtääksemme, mitä se sisältää. print(boston_dataset.keys()) antaa

dict_keys()
  • tiedot: sisältää eri talojen tiedot
  • target: talon hinnat
  • feature_nimet: ominaisuuksien nimet
  • DESCR: kuvaa aineistoa

tietää enemmän ominaisuudet Käytä boston_dataset.DESCR kaikkien ominaisuuksien kuvaus on alla:

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

muuttujan MEDV osoittamat talon hinnat ovat tavoitemuuttujamme ja loput ovat ominaisuusmuuttujia, joiden perusteella ennustamme talon arvon.

nyt tiedot ladataan pandojen datakehykseen käyttäen pd.DataFrame. Tämän jälkeen tulostamme tietojen ensimmäiset 5 riviä käyttäen head()

voidaan nähdä, että tavoitearvo MEDV puuttuu tiedoista. Luomme uuden sarakkeen tavoitearvoja ja lisäämme sen datakehykseen.

tietojen esikäsittely

tietojen lataamisen jälkeen on hyvä käytäntö katsoa, onko aineistosta puuttuvia arvoja. Laskemme kunkin ominaisuuden puuttuvien arvojen määrän käyttämällä isnull()

tästä aineistosta ei kuitenkaan puutu arvoja kuten alla on esitetty.

experatory data analysis

experatory data analysis on erittäin tärkeä vaihe ennen mallin kouluttamista. Tässä osiossa käytämme joitakin visualisointeja ymmärtääksemme kohdemuuttujan suhdetta muihin ominaisuuksiin.

piirretään ensin kohdemuuttujan jakauma MEDV. Käytämme distplot funktiota seaborn kirjastosta.

näemme, ettäMEDVarvot jakautuvat normaalisti muutamien poikkeamien kanssa.

seuraavaksi luodaan korrelaatiomatriisi, joka mittaa muuttujien välisiä lineaarisia suhteita. Korrelaatiomatriisi voidaan muodostaa käyttämällä corr funktiota pandas-dataframe-kirjastosta. Korrelaatiomatriisin kuvaamiseen käytetään heatmap funktiota seabornin kirjastosta.

korrelaatiokerroin vaihtelee -1: stä 1: een. Jos arvo on lähellä arvoa 1, se tarkoittaa, että kahden muuttujan välillä on vahva positiivinen korrelaatio. Kun se on lähellä lukua -1, muuttujilla on vahva negatiivinen korrelaatio.

havainnot:

  • soveltaaksemme lineaarista regressiomallia valitsemme ne ominaisuudet, joilla on suuri korrelaatio kohdemuuttujamme MEDV. Korrelaatiomatriisia katsomalla voidaan todeta, että RM on vahva positiivinen korrelaatio MEDV (0, 7) missä LSTAT on suuri negatiivinen korrelaatio MEDV(-0, 74.
  • tärkeä seikka lineaarisen regressiomallin ominaisuuksien valinnassa on monikokolineaarisuuden tarkistaminen. Ominaisuuksien RADTAX korrelaatio on 0,91. Nämä ominaisuusparit korreloivat vahvasti keskenään. Meidän ei pitäisi valita molempia ominaisuuksia yhdessä mallin koulutukseen. Katso selitystä tästä. Sama koskee ominaisuuksia DIS ja AGE, joiden korrelaatio on -0,75.

edellä esitettyjen havaintojen perusteella otamme RM ja LSTAT ominaisuuksiksemme. Scatter-kuviota käyttäen katsotaan, miten nämä ominaisuudet vaihtelevat MEDV.

observations:

  • hinnat nousevat, kun RM: n arvo nousee lineaarisesti. Poikkeavia tekijöitä on vähän, ja tietojen yläraja näyttää olevan 50.
  • hinnoilla on taipumus laskea LSTAT-arvon nousun myötä. Vaikka se ei näytä noudattavan aivan lineaarista linjaa.

aineiston valmistelu mallin koulutusta varten

yhdistämme LSTAT ja RM sarakkeet käyttäen np.c_ numpy-kirjaston toimittamia.

tietojen jakaminen koulutus-ja testisarjoihin

seuraavaksi jaetaan tiedot koulutus-ja testisarjoihin. Koulutamme mallia 80 prosentilla näytteistä ja testaamme loput 20 prosentilla. Teemme tämän arvioidaksemme mallin suorituskykyä näkymättömällä datalla. Tietojen jakamiseen käytämme train_test_split funktiota, jonka tarjoaa scikit-learn library. Lopuksi tulostamme koulutus-ja testisarjamme koot varmistaaksemme, onko halkaisu tapahtunut oikein.

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

mallin harjoittelu ja testaus

käytämme scikit-learnin LinearRegression mallimme kouluttamiseen sekä koulutus-että testisarjoissa.

mallin arviointi

arvioimme malliamme rmse: n ja R2-Scoren avulla.

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

tästä on hyvä aloittaa. Tulevissa blogeissa pohditaan keinoja mallin suorituskyvyn lisäämiseksi.

koko Jupyterin muistikirja löytyy täältä.

johtopäätös

tässä jutussa sovellimme lineaarisen regression käsitteitä Bostonin asuntoaineistoon. Suosittelen kokeilemaan myös muita aineistoja.

täältä voit etsiä tietoja

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

Kiitos lukemisesta!!

tämän sarjan seuraavassa osassa käsitellään polynomin regressiota. Katso tätä tilaa lisää.

Related Posts

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *