Iepriekšējā tēmā mēs uzzinājām par vienkāršu lineāro regresiju, kur atbildes mainīgā (Y) modelēšanai tiek izmantots viens neatkarīgais/prognozējošs(X) mainīgais. Taču var būt dažādi gadījumi, kad atbildes mainīgo ietekmē vairāk nekā viens prognozēšanas mainīgais; šādiem gadījumiem izmanto Multiple Linear Regression algoritmu.
Turklāt daudzkārtēja lineārā regresija ir vienkāršās lineārās regresijas paplašinājums, jo atbildes mainīgā prognozēšanai ir nepieciešams vairāk nekā viens prognozēšanas mainīgais. Mēs to varam definēt šādi:
Daudzkārtēja lineārā regresija ir viens no svarīgākajiem regresijas algoritmiem, kas modelē lineāro attiecību starp vienu atkarīgu nepārtrauktu mainīgo un vairāk nekā vienu neatkarīgu mainīgo.
Piemērs:
CO prognozēšana2emisijas, pamatojoties uz motora izmēru un cilindru skaitu automašīnā.
Daži galvenie punkti par MLR:
- MLR atkarīgajam vai mērķa mainīgajam (Y) ir jābūt nepārtrauktam/reālam, bet prognozējošajam vai neatkarīgajam mainīgajam var būt nepārtraukta vai kategoriska forma.
- Katram pazīmju mainīgajam ir jāmodelē lineārā saistība ar atkarīgo mainīgo.
- MLR mēģina ievietot regresijas līniju caur daudzdimensiju datu punktu telpu.
MLR vienādojums:
Vairāku lineāro regresiju gadījumā mērķa mainīgais (Y) ir vairāku prognozēšanas mainīgo x lineāra kombinācija.1, x2, x3, ..., xn. Tā kā tas ir vienkāršās lineārās regresijas uzlabojums, tāpēc tas pats tiek piemērots daudzkārtējai lineārai regresijas vienādojumam, vienādojums kļūst:
Y= b<sub>0</sub>+b<sub>1</sub>x<sub>1</sub>+ b<sub>2</sub>x<sub>2</sub>+ b<sub>3</sub>x<sub>3</sub>+...... bnxn ............... (a)
kur,
Y = izvades/atbildes mainīgais
drausmīgs miegs
b0, b1, b2, b3, bn....= Modeļa koeficienti.
x1, x2, x3, x4,...= Dažādi Neatkarīgi/iezīmes mainīgie
Pieņēmumi vairākkārtējai lineārai regresijai:
- A lineāras attiecības jābūt starp mērķa un prognozēšanas mainīgajiem.
- Regresijas atlikumiem jābūt parasti izplatīts .
- MLR uzņemas maz vai nav daudzkolinearitātes (korelācija starp neatkarīgo mainīgo) datos.
Vairāku lineārās regresijas modeļa ieviešana, izmantojot Python:
Lai ieviestu MLR, izmantojot Python, mums ir šāda problēma:
Problēmas apraksts:
Mums ir datu kopa ar 50 jaunuzņēmumi . Šajā datu kopā ir piecas galvenās informācijas: Pētniecības un attīstības izdevumi, administrācijas izdevumi, mārketinga izdevumi, stāvoklis un peļņa finanšu gadā . Mūsu mērķis ir izveidot modeli, kas var viegli noteikt, kuram uzņēmumam ir maksimālā peļņa un kurš visvairāk ietekmē uzņēmuma peļņu.
Tā kā mums ir jāatrod peļņa, tas ir atkarīgais mainīgais, un pārējie četri mainīgie ir neatkarīgi mainīgie. Tālāk ir norādīti galvenie MLR modeļa izvietošanas soļi.
1. darbība: datu pirmapstrādes darbība:
Pats pirmais solis ir
# importing libraries import numpy as nm import matplotlib.pyplot as mtp import pandas as pd
#importing datasets data_set= pd.read_csv('50_CompList.csv')
Izvade: Mēs iegūsim datu kopu šādi:
Augšējā izvadē mēs varam skaidri redzēt, ka ir pieci mainīgie, kuros četri mainīgie ir nepārtraukti un viens ir kategorisks mainīgais.
#Extracting Independent and dependent Variable x= data_set.iloc[:, :-1].values y= data_set.iloc[:, 4].values
Izvade:
Out[5]:
array([[165349.2, 136897.8, 471784.1, 'New York'], [162597.7, 151377.59, 443898.53, 'California'], [153441.51, 101145.55, 407934.54, 'Florida'], [144372.41, 118671.85, 383199.62, 'New York'], [142107.34, 91391.77, 366168.42, 'Florida'], [131876.9, 99814.71, 362861.36, 'New York'], [134615.46, 147198.87, 127716.82, 'California'], [130298.13, 145530.06, 323876.68, 'Florida'], [120542.52, 148718.95, 311613.29, 'New York'], [123334.88, 108679.17, 304981.62, 'California'], [101913.08, 110594.11, 229160.95, 'Florida'], [100671.96, 91790.61, 249744.55, 'California'], [93863.75, 127320.38, 249839.44, 'Florida'], [91992.39, 135495.07, 252664.93, 'California'], [119943.24, 156547.42, 256512.92, 'Florida'], [114523.61, 122616.84, 261776.23, 'New York'], [78013.11, 121597.55, 264346.06, 'California'], [94657.16, 145077.58, 282574.31, 'New York'], [91749.16, 114175.79, 294919.57, 'Florida'], [86419.7, 153514.11, 0.0, 'New York'], [76253.86, 113867.3, 298664.47, 'California'], [78389.47, 153773.43, 299737.29, 'New York'], [73994.56, 122782.75, 303319.26, 'Florida'], [67532.53, 105751.03, 304768.73, 'Florida'], [77044.01, 99281.34, 140574.81, 'New York'], [64664.71, 139553.16, 137962.62, 'California'], [75328.87, 144135.98, 134050.07, 'Florida'], [72107.6, 127864.55, 353183.81, 'New York'], [66051.52, 182645.56, 118148.2, 'Florida'], [65605.48, 153032.06, 107138.38, 'New York'], [61994.48, 115641.28, 91131.24, 'Florida'], [61136.38, 152701.92, 88218.23, 'New York'], [63408.86, 129219.61, 46085.25, 'California'], [55493.95, 103057.49, 214634.81, 'Florida'], [46426.07, 157693.92, 210797.67, 'California'], [46014.02, 85047.44, 205517.64, 'New York'], [28663.76, 127056.21, 201126.82, 'Florida'], [44069.95, 51283.14, 197029.42, 'California'], [20229.59, 65947.93, 185265.1, 'New York'], [38558.51, 82982.09, 174999.3, 'California'], [28754.33, 118546.05, 172795.67, 'California'], [27892.92, 84710.77, 164470.71, 'Florida'], [23640.93, 96189.63, 148001.11, 'California'], [15505.73, 127382.3, 35534.17, 'New York'], [22177.74, 154806.14, 28334.72, 'California'], [1000.23, 124153.04, 1903.93, 'New York'], [1315.46, 115816.21, 297114.46, 'Florida'], [0.0, 135426.92, 0.0, 'California'], [542.05, 51743.15, 0.0, 'New York'], [0.0, 116983.8, 45173.06, 'California']], dtype=object)
Kā redzams iepriekš minētajā izvadā, pēdējā kolonnā ir kategoriski mainīgie, kas nav piemēroti tiešai lietošanai modeļa pielāgošanai. Tāpēc mums ir jākodē šis mainīgais.
Dummy mainīgo kodēšana:
Tā kā mums ir viens kategorisks mainīgais (State), kuru nevar tieši attiecināt uz modeli, tāpēc mēs to iekodēsim. Lai kodētu kategorisko mainīgo skaitļos, mēs izmantosim LabelEncoder klasē. Bet ar to nepietiek, jo tajā joprojām ir zināma relāciju kārtība, kas var radīt nepareizu modeli. Tāpēc, lai novērstu šo problēmu, mēs izmantosim OneHotEncoder , kas izveidos fiktīvos mainīgos. Zemāk ir tā kods:
#Catgorical data from sklearn.preprocessing import LabelEncoder, OneHotEncoder labelencoder_x= LabelEncoder() x[:, 3]= labelencoder_x.fit_transform(x[:,3]) onehotencoder= OneHotEncoder(categorical_features= [3]) x= onehotencoder.fit_transform(x).toarray()
Šeit mēs kodējam tikai vienu neatkarīgu mainīgo, kas ir stāvoklis, jo citi mainīgie ir nepārtraukti.
Izvade:
Kā redzams iepriekš minētajā izvadā, stāvokļa kolonna ir pārveidota par fiktīviem mainīgajiem (0 un 1). Šeit katra fiktīva mainīgā kolonna atbilst vienam stāvoklim . Mēs varam to pārbaudīt, salīdzinot to ar sākotnējo datu kopu. Pirmā kolonna atbilst Kalifornijas štats , otrā kolonna atbilst Floridas štats , un trešā kolonna atbilst Ņujorkas štats .
Piezīme:Mēs nedrīkstam izmantot visus fiktīvos mainīgos vienlaikus, tāpēc tam ir jābūt par 1 mazākam par kopējo fiktīvo mainīgo skaitu, pretējā gadījumā tiks izveidots fiktīva mainīgā slazds.
- Tagad mēs rakstām vienu koda rindiņu, lai izvairītos no fiktīva mainīgā slazda:
#avoiding the dummy variable trap: x = x[:, 1:]
Ja mēs nenoņemsim pirmo fiktīvo mainīgo, tas var ieviest modelī multikolinearitāti.
Kā redzams iepriekš redzamajā izvades attēlā, pirmā kolonna ir noņemta.
galvenā programma java
- Tagad mēs sadalīsim datu kopu apmācības un testa komplektā. Kods tam ir norādīts zemāk:
# Splitting the dataset into training and test set. from sklearn.model_selection import train_test_split x_train, x_test, y_train, y_test= train_test_split(x, y, test_size= 0.2, random_state=0)
Iepriekš minētais kods sadalīs mūsu datu kopu apmācības komplektā un testa kopā.
Izvade: Iepriekš minētais kods sadalīs datu kopu apmācības kopā un testa komplektā. Varat pārbaudīt izvadi, noklikšķinot uz mainīgā pārlūka opcijas, kas sniegta Spyder IDE. Testa komplekts un treniņu komplekts izskatīsies šādi:
Testa komplekts:
java operators
Treniņu komplekts:
Piezīme:MLR mēs neveicam funkciju mērogošanu, jo par to rūpējas bibliotēka, tāpēc mums tas nav jādara manuāli.
2. darbība. Mūsu MLR modeļa pielāgošana apmācības komplektam:
Tagad mēs esam labi sagatavojuši savu datu kopu, lai nodrošinātu apmācību, kas nozīmē, ka mēs pielāgosim savu regresijas modeli apmācības kopai. Tas būs līdzīgi kā mēs to darījām Vienkāršs lineārās regresijas modelis. Kods šim būs:
#Fitting the MLR model to the training set: from sklearn.linear_model import LinearRegression regressor= LinearRegression() regressor.fit(x_train, y_train)
Izvade:
Out[9]: LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None, normalize=False)
Tagad mēs esam veiksmīgi apmācījuši savu modeli, izmantojot apmācības datu kopu. Nākamajā darbībā mēs pārbaudīsim modeļa veiktspēju, izmantojot testa datu kopu.
3. darbība. Testa kopas rezultātu prognozēšana:
Mūsu modeļa pēdējais solis ir modeļa veiktspējas pārbaude. Mēs to darīsim, paredzot testa komplekta rezultātu. Prognozēšanai izveidosim a y_pred vektors. Zemāk ir tā kods:
#Predicting the Test set result; y_pred= regressor.predict(x_test)
Izpildot iepriekš minētās koda rindas, mainīgā pētnieka opcijā tiks ģenerēts jauns vektors. Mēs varam pārbaudīt savu modeli, salīdzinot prognozētās vērtības un testa kopu vērtības.
Izvade:
Iepriekš minētajā izvadā mēs esam paredzējuši rezultātu kopu un testa kopu. Mēs varam pārbaudīt modeļa veiktspēju, salīdzinot šos divus vērtību indeksus pēc indeksa. Piemēram, pirmajam indeksam ir paredzamā vērtība 103015 $ peļņa un pārbaude/reālā vērtība 103282 $ peļņa. Atšķirība ir tikai 267 ASV dolāri , kas ir laba prognoze, tāpēc, visbeidzot, mūsu modelis ir pabeigts šeit.
- Mēs varam arī pārbaudīt mācību datu kopas un testa datu kopas rezultātu. Zemāk ir tā kods:
print('Train Score: ', regressor.score(x_train, y_train)) print('Test Score: ', regressor.score(x_test, y_test))
Izvade: Rezultāts ir:
Train Score: 0.9501847627493607 Test Score: 0.9347068473282446
Iepriekš minētais rezultāts norāda, ka mūsu modelis ir 95% precīzs ar apmācības datu kopu un 93% precīzs ar testa datu kopu.
Piezīme:Nākamajā tēmā mēs redzēsim, kā mēs varam uzlabot modeļa veiktspēju, izmantojotAtpakaļ likvidēšanaprocess.
Daudzkārtējas lineārās regresijas pielietojumi:
Vairāku lineāro regresiju galvenokārt izmanto divas:
- Neatkarīgā mainīgā efektivitāte prognozēšanā:
- Izmaiņu ietekmes prognozēšana: