regresie liniară pe setul de date de locuințe Boston

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

în blogul meu anterior, am acoperit elementele de bază ale regresiei liniare și coborârii gradientului. Pentru a obține o regresie liniară practică, vom lua un set de date original și vom aplica conceptele pe care le-am învățat.

vom lua setul de date privind locuințele care conține informații despre diferite case din Boston. Aceste date au fost inițial o parte din depozitul UCI Machine Learning și au fost eliminate acum. De asemenea, putem accesa aceste date din biblioteca scikit-learn. Există 506 de eșantioane și 13 variabile de caracteristici în acest set de date. Obiectivul este de a prezice valoarea prețurilor casei folosind caracteristicile date.

să începem.

În primul rând, vom importa bibliotecile necesare.

în continuare, vom încărca datele carcasei din biblioteca scikit-learn și o vom înțelege.

imprimăm valoareaboston_dataset pentru a înțelege ce conține. print(boston_dataset.keys())

dict_keys()
  • date: conține informații pentru diverse case
  • target: prețurile casei
  • feature_names: numele caracteristicilor
  • DESCR: descrie setul de date

pentru a afla mai multe despre caracteristicile utilizați boston_dataset.DESCR descrierea tuturor caracteristicilor este prezentată mai jos:

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

prețurile casei indicate de variabilaMEDV este variabila noastră țintă, iar restul sunt variabilele caracteristice pe baza cărora vom prezice valoarea unei case.

vom încărca acum datele într-un cadru de date pandas folosindpd.DataFrame. Apoi imprimăm primele 5 rânduri ale datelor folosind head()

putem vedea că valoarea țintă MEDV lipsește din date. Creăm o nouă coloană de valori țintă și o adăugăm la Cadrul de date.

preprocesarea datelor

după încărcarea datelor, este o practică bună să vedeți dacă există valori lipsă în date. Numărăm numărul de valori lipsă pentru fiecare caracteristică folosind isnull()

cu toate acestea, nu există valori lipsă în acest set de date așa cum se arată mai jos.

analiza datelor exploratorii

analiza datelor exploratorii este un pas foarte important înainte de formarea modelului. În această secțiune, vom folosi câteva vizualizări pentru a înțelege relația variabilei țintă cu alte caracteristici.

să trasăm mai întâi distribuția variabilei țintăMEDV. Vom folosi funcția distplotdin bibliotecaseaborn.

vedem că valorile MEDV sunt distribuite în mod normal cu puține valori aberante.în continuare, creăm o matrice de corelație care măsoară relațiile liniare dintre variabile. Matricea de corelație poate fi formată utilizând funcțiacorr din biblioteca de cadre de date pandas. Vom folosi heatmap funcția din biblioteca seaborn pentru a trasa matricea de corelație.

coeficientul de corelație variază de la -1 la 1. Dacă valoarea este aproape de 1, înseamnă că există o corelație pozitivă puternică între cele două variabile. Când este aproape de -1, variabilele au o corelație negativă puternică.

observații:

  • pentru a se potrivi unui model de regresie liniară, selectăm acele caracteristici care au o corelație ridicată cu variabila țintăMEDV. Privind matricea de corelație putem vedea că RM are o corelație pozitivă puternică cu MEDV (0.7) unde as LSTAT are o corelație negativă ridicată cu MEDV(-0.74).
  • un punct important în selectarea caracteristicilor pentru un model de regresie liniară este verificarea multi-co-liniarității. CaracteristicileRADTAX au o corelație de 0,91. Aceste perechi de caracteristici sunt puternic corelate între ele. Nu ar trebui să selectăm ambele caracteristici împreună pentru formarea modelului. Verificați acest lucru pentru o explicație. Același lucru este valabil și pentru caracteristicile DIS și AGE care au o corelație de -0.75.

pe baza observațiilor de mai sus vomRM șiLSTAT ca Caracteristici noastre. Folosind un grafic scatter să vedem cum variază aceste caracteristici cu MEDV.

observații:

  • prețurile cresc pe măsură ce valoarea RM crește liniar. Există puține valori aberante, iar datele par să fie limitate la 50.
  • prețurile tind să scadă odată cu creșterea LSTAT. Deși nu pare să urmeze exact o linie liniară.

pregătirea datelor pentru instruirea modelului

concatenăm coloaneleLSTAT șiRM folosindnp.c_ furnizate de Biblioteca numpy.

împărțirea datelor în seturi de antrenament și testare

apoi, împărțim datele în seturi de antrenament și testare. Antrenăm modelul cu 80% din probe și testăm cu restul de 20%. Facem acest lucru pentru a evalua performanța modelului pe date nevăzute. Pentru a împărți datele pe care le folosim train_test_split funcția furnizată de Biblioteca scikit-learn. În cele din urmă, tipărim dimensiunile setului nostru de antrenament și testare pentru a verifica dacă divizarea a avut loc corect.

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

instruirea și testarea modelului

folosim scikit-learn ‘ sLinearRegression pentru a instrui modelul nostru atât pe seturi de antrenament, cât și pe teste.

evaluarea modelului

vom evalua modelul nostru folosind RMSE și R2-scor.

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

Acest lucru este bun pentru a începe cu. În blogurile viitoare, vom analiza modalități de creștere a performanței modelului.CAIETUL Jupyter complet poate fi găsit aici.

concluzie

în această poveste, am aplicat conceptele de regresie liniară pe setul de date pentru locuințe din Boston. Aș recomanda să încercați și alte seturi de date.

iată câteva locuri în care puteți căuta date

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

Vă mulțumim pentru lectură!!

în următoarea parte a acestei serii, vom acoperi regresia polinomială. Urmăriți acest spațiu pentru mai multe.

Related Posts

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *