
A korábbi blog, Nem vonatkozik az alapokat, lineáris regresszió, illetve gradiens süllyedés. Ahhoz, hogy gyakorlati lineáris regressziót kapjunk, egy eredeti adatkészletet fogunk használni, és alkalmazzuk a megtanult fogalmakat.
fogjuk venni a ház adathalmaz, amely információkat tartalmaz a különböző házak Boston. Ezek az adatok eredetileg az UCI gépi tanulási adattár részét képezték, most pedig eltávolításra kerültek. Ezeket az adatokat a scikit-learn könyvtárból is elérhetjük. Ebben az adatkészletben 506 minta és 13 jellemző változó található. A cél az, hogy megjósoljuk a ház árainak értékét az adott funkciók felhasználásával.
Tehát kezdjük el.
először importáljuk a szükséges könyvtárakat.
ezután a házadatokat a scikit-learn
könyvtárból töltjük be, és megértjük.
kinyomtatjuk a boston_dataset
értékét, hogy megértsük, mit tartalmaz. print(boston_dataset.keys())
ad
dict_keys()
- adatok: tartalmazza a különböző házak adatait
- cél: a ház árai
- feature_names: a jellemzők nevei
- DESCR: leírja a
jellemzők használataboston_dataset.DESCR
az összes funkció leírása az alábbiakban található:
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
a ház árai, amelyeket a MEDV
változó jelez, a fennmaradó jellemző változók, amelyek alapján megjósoljuk a ház értékét.
az adatokat most a pd.DataFrame
használatával töltjük be egy pandas adatbázisba. Mi akkor a nyomtatás az első 5 sor az adatok a head()

láthatjuk, hogy a célérték MEDV
hiányoznak az adatok. Létrehozunk egy új oszlopot a célértékekről, majd hozzáadjuk a dataframe-hez.
adat előfeldolgozás
az adatok betöltése után jó gyakorlat Annak megállapítása, hogy vannak-e hiányzó értékek az adatokban. Az egyes funkciók hiányzó értékeinek számát A isnull()
azonban ebben az adatkészletben Nincsenek hiányzó értékek az alábbiak szerint.

feltáró Adatelemzés
feltáró adatelemzés nagyon fontos lépés a modell kiképzése előtt. Ebben a részben néhány vizualizációt fogunk használni, hogy megértsük a célváltozó kapcsolatát más funkciókkal.
először ábrázoljuk a MEDV
célváltozó eloszlását. A distplot
függvényt a seaborn
könyvtárból fogjuk használni.

azt látjuk, hogy az értékek MEDV
osztják általában néhány kiugró értéket.
ezután létrehozunk egy korrelációs mátrixot, amely méri a változók közötti lineáris kapcsolatokat. A korrelációs mátrix a pandas dataframe könyvtár corr
függvényével alakítható ki. A korrelációs mátrix ábrázolásához a heatmap
függvényt használjuk A seaborn könyvtárból.

a korrelációs együttható -1-től 1-ig terjed. Ha az érték közel van az 1-hez, akkor azt jelenti, hogy erős pozitív korreláció van a két változó között. Ha közel van -1-hez, a változók erős negatív korrelációval rendelkeznek.
megfigyelések:
- a lineáris regressziós modell illesztéséhez kiválasztjuk azokat a funkciókat, amelyek nagy korrelációt mutatnak a
MEDV
célváltozóval. A korrelációs mátrix látjuk, hogy aRM
erős pozitív korrelációtMEDV
(0.7), ahol, mint aLSTAT
magas negatív korreláció aMEDV
(-0.74). - a lineáris regressziós modell funkcióinak kiválasztásában fontos szempont a több-linearitás ellenőrzése. A
RAD
TAX
jellemzők korrelációja 0,91. Ezek a tulajdonságpárok erősen korrelálnak egymással. Nem szabad ezeket a funkciókat együtt kiválasztani a modell képzéséhez. Ellenőrizze ezt a magyarázatot. Ugyanez vonatkozik aDIS
ésAGE
funkciókra, amelyek korrelációja -0,75.
a fenti megfigyelések alapján RM
és LSTAT
jellemzőinkként. Egy scatter telek lássuk, hogy ezek a funkciók változnak MEDV
.

Megfigyelések:
- Az árak emelkedése, mint az érték RM lineárisan nő. Kevés kiugró adat van, és úgy tűnik, hogy az adatok 50-re vannak korlátozva.
- az árak általában csökkennek az LSTAT növekedésével. Bár nem úgy tűnik, hogy pontosan egy lineáris vonalat követ.
az adatok előkészítése a modell
LSTAT
és RM
oszlopok segítségével np.c_
a numpy könyvtár által biztosított.
az adatokat képzési és tesztkészletekre osztjuk
ezután az adatokat képzési és tesztkészletekre osztjuk. A minta 80% – ával képezzük a modellt, a fennmaradó 20% – kal teszteljük. Ezt azért tesszük, hogy felmérjük a modell teljesítményét láthatatlan adatokon. Az adatok megosztásához atrain_test_split
függvényt használjuk, amelyet a scikit-learn library biztosít. Végül kinyomtatjuk a képzési és tesztkészletünk méretét annak ellenőrzésére, hogy a felosztás megfelelően történt-e.
(404, 2)
(102, 2)
(404,)
(102,)
A modell
képzéséhez és teszteléséhez a scikit-learn LinearRegression
modellünket mind a képzési, mind a tesztkészleteken használjuk.
modellértékelés
MODELLÉRTÉKELÉSÜNKET RMSE és R2-pontszám alapján értékeljük.
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
Ez jó kezdeni. A közelgő blogokban megvizsgáljuk a modell teljesítményének növelését.
a teljes Jupyter Notebook itt található.
következtetés
ebben a történetben a lineáris regresszió fogalmát alkalmaztuk a Boston házadatkészletén. Azt javasoljuk, hogy próbálja ki más adatbázisok is.
itt van néhány hely, ahol adatokat kereshet
- https://www.kaggle.com/datasets
- https://archive.ics.uci.edu/ml/datasets.html
https://toolbox.google.com/datasetsearch
Köszönjük az olvasást!!
a sorozat következő részében a polinom regressziót fedjük le. Ne nézd ezt a helyet több.