Lineární Regrese na Boston Bydlení Dataset

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

V mém předchozím blogu, Zakryla jsem základy lineární regrese a gradientní sestup. Abychom získali praktickou lineární regresi, vezmeme původní datovou sadu a použijeme koncepty, které jsme se naučili.

vezmeme datový soubor bydlení, který obsahuje informace o různých domech v Bostonu. Tato data byla původně součástí úložiště UCI Machine Learning A nyní byla odstraněna. K těmto datům můžeme přistupovat také z knihovny scikit-learn. V této datové sadě je 506 vzorků a 13 proměnných funkcí. Cílem je předpovědět hodnotu cen domu pomocí daných vlastností.

tak začněme.

nejprve importujeme požadované knihovny.

Next, jsme se načte údaje o bydlení z scikit-learn knihovna a pochopit to.

vytiskneme hodnotu boston_dataset pochopit, co to obsahuje. print(boston_dataset.keys()) dává

dict_keys()
  • data: obsahuje informace pro různé domy
  • cíl: ceny domu
  • feature_names: jména, funkce,
  • DESCR: popisuje datový soubor

vědět více o funkcích používání boston_dataset.DESCR popis všech funkcí je uveden níže:

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 indikována proměnnou MEDV náš cíl je variabilní a zbývající jsou funkce proměnných, na jejichž základě budeme předpovědět hodnotu domu.

nyní načteme data do datového rámce pandy pomocí pd.DataFrame. Pak jsme tiskové prvních 5 řádků dat pomocí head()

můžeme vidět, že cílová hodnota MEDV chybí data. Vytvoříme nový sloupec cílových hodnot a přidáme jej do datového rámce.

předzpracování dat

po načtení dat je dobré zjistit, zda v datech chybí nějaké hodnoty. Budeme počítat počet chybějících hodnot pro jednotlivé funkce pomocí isnull()

Nicméně, nejsou tam žádné chybějící hodnoty v tomto souboru, jak je znázorněno níže.

Průzkumné Analýzy Dat

Průzkumné Analýzy Dat je velmi důležitým krokem před tréninkem modelu. V této části použijeme některé vizualizace k pochopení vztahu cílové proměnné s dalšími funkcemi.

nejprve vykreslíme distribuci cílové proměnné MEDV. Použijeme funkci distplot z knihovny seaborn.

vidíme, že hodnoty MEDV jsou distribuovány obvykle s několika odlehlých hodnot.

dále vytvoříme korelační matici, která měří lineární vztahy mezi proměnnými. Korelační matici lze vytvořit pomocí funkce corr z knihovny pandas dataframe. Pro vykreslení korelační matice použijeme funkci heatmap z knihovny seaborn.

korelačního koeficientu se pohybuje od -1 do 1. Pokud je hodnota blízká 1, znamená to, že mezi těmito dvěma proměnnými existuje silná pozitivní korelace. Když je blízko -1, proměnné mají silnou negativní korelaci.

pozorování:

  • Aby se vešly lineární regresní model, vybíráme ty rysy, které mají vysokou korelaci s naší cílovou proměnnou MEDV. Při pohledu na korelační matice můžeme vidět, že RM má silnou pozitivní korelaci s MEDV (0.7), kde jako LSTAT má vysokou negativní korelaci s MEDV(-0.74).
  • důležitým bodem při výběru funkcí pro lineární regresní model je kontrola multi-co-linearity. Vlastnosti RADTAX mají korelaci 0,91. Tyto páry funkcí jsou navzájem silně korelovány. Neměli bychom vybrat obě tyto funkce společně pro trénink modelu. Podívejte se na toto vysvětlení. Totéž platí pro funkce DIS a AGE, které mají korelaci -0.75.

Na základě výše uvedených pozorování budeme RM a LSTAT jako naše funkce. Pomocí grafu rozptylu uvidíme, jak se tyto funkce liší s MEDV.

Poznámky:

  • zvýšení ceny jako hodnota RM lineárně zvyšuje. Existuje jen málo odlehlých hodnot a zdá se, že data jsou omezena na 50.
  • ceny mají tendenci klesat s nárůstem LSTAT. I když to nevypadá, že by sledoval přesně lineární linii.

Příprava dat pro trénování modelu

Jsme zřetězit LSTATRM sloupců pomocí np.c_ je poskytována knihovna numpy.

Rozdělení dat do školení a testování sad

dále musíme rozdělit data do vzdělávání a testování sad. Model trénujeme s 80% vzorků a testujeme se zbývajícími 20%. Děláme to proto, abychom vyhodnotili výkon modelu na neviditelných datech. Pro rozdělení dat používáme train_test_split funkci poskytovanou knihovnou scikit-learn. Nakonec vytiskneme velikosti naší tréninkové a testovací sady, abychom ověřili, zda došlo k rozdělení správně.

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

Školení a testování modelu

použijeme scikit-learn je LinearRegression trénovat náš model na školení a testování sad.

vyhodnocení modelu

náš model vyhodnotíme pomocí RMSE a R2-skóre.

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

to je dobré začít. V nadcházejících blogech se podíváme na způsoby, jak zvýšit výkon modelu.

kompletní Notebook Jupyter najdete zde.

závěr

v tomto příběhu jsme aplikovali koncepty lineární regrese na datovou sadu Boston housing. Doporučil bych vyzkoušet i jiné datové sady.

Zde je několik míst, se můžete podívat na data,

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

Díky za Čtení!!

v další části této řady se budeme zabývat polynomiální regresí. Sledujte tento prostor pro více informací.

Related Posts

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *