regresja liniowa na obudowie Bostonu

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

na moim poprzednim blogu omówiłem podstawy regresji liniowej i gradientowego opadania. Aby uzyskać praktyczną regresję liniową, weźmiemy oryginalny zestaw danych i zastosujemy pojęcia, których się nauczyliśmy.

weźmiemy zestaw danych mieszkaniowych, który zawiera informacje o różnych domach w Bostonie. Dane te były pierwotnie częścią repozytorium UCI Machine Learning i zostały teraz usunięte. Możemy również uzyskać dostęp do tych danych z biblioteki scikit-learn. W tym zbiorze danych znajduje się 506 próbek i 13 zmiennych funkcji. Celem jest przewidywanie wartości cen domu przy użyciu danych funkcji.

więc zaczynajmy.

najpierw zaimportujemy wymagane biblioteki.

następnie załadujemy dane Obudowy z bibliotekiscikit-learn I zrozumiemy je.

drukujemy wartośćboston_dataset, aby zrozumieć, co ona zawiera. print(boston_dataset.keys()) podaje

dict_keys()
  • dane: zawiera informacje dla różnych domów
  • target: ceny domu
  • feature_names: nazwy cech
  • DESCR: opisuje zbiór danych

, aby dowiedzieć się więcej o cechach użyj boston_dataset.DESCR opis wszystkich funkcji znajduje się poniżej:

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

ceny domu wskazane przez zmiennąMEDV są naszą zmienną docelową, a pozostałe są zmiennymi funkcyjnymi, na podstawie których będziemy przewidywać wartość domu.

teraz załadujemy dane do ramki danych pandy za pomocąpd.DataFrame. Następnie drukujemy 5 pierwszych wierszy danych używając head()

widzimy, że w danych brakuje wartości docelowej MEDV. Tworzymy nową kolumnę wartości docelowych i dodajemy ją do ramki danych.

wstępne przetwarzanie danych

Po załadowaniu danych dobrą praktyką jest sprawdzenie, czy w danych nie ma żadnych brakujących wartości. Liczbę brakujących wartości dla każdej funkcji policzymy za pomocą isnull()

jednak w tym zbiorze danych nie ma brakujących wartości, jak pokazano poniżej.

analiza danych eksploracyjnych

analiza danych eksploracyjnych jest bardzo ważnym krokiem przed szkoleniem modelu. W tej sekcji użyjemy niektórych wizualizacji, aby zrozumieć związek zmiennej docelowej z innymi funkcjami.

najpierw narysujmy rozkład zmiennej docelowej MEDV. Użyjemy funkcjidistplot z bibliotekiseaborn.

widzimy, że wartościMEDVsą zwykle dystrybuowane z kilkoma wartościami odstającymi.

następnie tworzymy macierz korelacji, która mierzy liniowe zależności między zmiennymi. Matrycę korelacji można utworzyć za pomocą funkcjicorr z biblioteki ramek danych pandy. Użyjemy funkcji heatmap z biblioteki seaborn do wykreślenia macierzy korelacji.

współczynnik korelacji wynosi od -1 do 1. Jeśli wartość jest bliska 1, oznacza to, że istnieje silna dodatnia korelacja między tymi dwiema zmiennymi. Gdy jest ona bliska -1, zmienne mają silną korelację ujemną.

uwagi:

  • aby dopasować model regresji liniowej, wybieramy te cechy, które mają wysoką korelację z naszą zmienną docelowąMEDV. Patrząc na matrycę korelacji możemy zauważyć, że RM ma silną dodatnią korelację z (0.7) gdzie LSTAT ma wysoką ujemną korelację z MEDV(-0.74).
  • ważnym punktem w wyborze funkcji dla modelu regresji liniowej jest sprawdzenie multi-co-liniowości. Cechy RADTAX mają korelację 0.91. Te pary cech są ze sobą silnie skorelowane. Nie powinniśmy wybierać obu tych funkcji razem do treningu modelu. Sprawdź to dla wyjaśnienia. To samo dotyczy funkcji DIS I AGE, które mają korelację -0,75.

na podstawie powyższych obserwacji będziemyRM ILSTAT jako nasze funkcje. Korzystając z wykresu punktowego zobaczmy, jak te funkcje różnią się od MEDV.

uwagi:

  • ceny rosną wraz ze wzrostem wartości RM liniowo. Istnieje kilka wartości odstających, a dane wydają się być ograniczone do 50.
  • ceny mają tendencję do zmniejszania się wraz ze wzrostem LSTAT. Chociaż nie wygląda na to, że podąża dokładnie za linią liniową.

przygotowanie danych do szkolenia modelu

łączymyLSTAT IRM używającnp.c_ dostarczanych przez Bibliotekę numpy.

podział danych na zestawy treningowe i testowe

następnie dzielimy dane na zestawy treningowe i testowe. Trenujemy model z 80% próbek i testujemy z pozostałymi 20%. Robimy to, aby ocenić wydajność modelu na niewidocznych danych. Do podziału danych używamy funkcjitrain_test_split dostarczanej przez Bibliotekę scikit-learn. Na koniec drukujemy rozmiary naszego zestawu treningowego i testowego, aby sprawdzić, czy podział nastąpił prawidłowo.

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

szkolenie i testowanie modelu

używamy scikit-learn ’ sLinearRegression do szkolenia naszego modelu zarówno na zestawach treningowych, jak i testowych.

ocena modelu

ocenimy nasz model za pomocą rmse i 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

warto zacząć od tego. W nadchodzących blogach przyjrzymy się sposobom na zwiększenie wydajności modelu.

kompletny zeszyt Jupyter znajdziesz tutaj.

wnioski

w tej historii zastosowaliśmy koncepcje regresji liniowej na zestawie danych Boston housing. Polecam wypróbować również inne zbiory danych.

oto kilka miejsc, w których możesz szukać danych

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

Dziękujemy za przeczytanie!!

w następnej części tej serii omówimy regresję Wielomianową. Obserwuj to miejsce, aby uzyskać więcej.

Related Posts

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *