Kodi_Nga_zeroja
Hej të gjithëve, më lejoni t'ju tregoj historinë e Ian-it, shefi i të cilit ka sfiduar të parashikojë peshën e trurit duke pasur parasysh madhësinë e kokës.
Le të ndihmojmë Ian, ta zgjidhim këtë çështje me hapat e mëposhtëm:-
a) Le të mbledhim një grup të dhënash të ngjashme bazuar në vëzhgimet e kaluara
Miku ynë #Kaggle na vjen në ndihmë, ja si duken të dhënat tona
b) Vështrim i shpejtë
Duke kuptuar termat mjekësore dhe modelin e të dhënave, Ian arrin në përfundimin se OLS do të ishte metoda më e mirë për të parashikuar vlerat. Le të përpiqemi të shohim nëse funksionon vërtet
c) Shënojini ato
Ai së pari shënon konceptin pas OLS
- Çfarë bën saktësisht OLS?
Qëllimi kryesor i OLS është të zvogëlojë gabimin midis vlerës aktuale dhe asaj të parashikuar duke përdorur llojin e duhur të parashikimit për pjerrësinë (m) dhe konstanten (c), d.m.th.
Minimizo∑(yi — ŷi)²
ku yi është vlera aktuale, ŷi është vlera e parashikuar.
- Si të gjejmë pjerrësinë (m) dhe konstanten (c)?
Eq e regresionit të y në x ështëy-ȳ = m_yx (x-x̄)
ku x̄ - mesatarja e x, ȳ - mesatarja e y dhe m_yx është pjerrësia e y në x
Ne përdorim formulën e mëposhtme për të gjetur pjerrësinë (m)
Për të gjetur c,
c = ȳ — (m * x̄ )
d) Le të kodojmë
Për të parashikuar peshën e kokës si në shembull, le të ndjekim të njëjtën procedurë në piton
import pandas as pd import numpy as np import matplotlib.pyplot as plt # Deifne dependent and independent variable x=df['Head Size(cm^3)'].values y=df['Brain Weight(grams)'].values n=len(x) mean_x = np.mean(x) # mean of x mean_y = np.mean(y) # mean of y # Let's calculate slope num=0 den=0 for i in range(n): num+= (x[i] - mean_x) * (y[i]- mean_y) den+= (x[i] - mean_x) ** 2 m=num/den # Let's calculate constant (c) c=mean_y-(m*mean_x)
Këto janë vlerat që Ian mori si rezultat
d) Le të marrim disa pamje vizuale
max_x = np.max(x) + 100 min_x = np.min(x) - 100 w = np.linspace(min_x, max_x, 1000) v = c + m*w #ploting line plt.plot(w,v, color = '#58b970',label = 'Regression Line') #ploting Scatter points plt.scatter(x,y,c= '#ef5423', label = 'Scatter Plot') plt.xlabel('Head size in cm') plt.ylabel('Brain Weight in grams') plt.legend() plt.show()
e) Faleminderit!
Tani Ian mund të parashikojë lehtësisht peshën e trurit duke pasur parasysh madhësinë e kokës, thjesht duke zëvendësuar vlerat x dhe y.
Gjërat për t'u mbajtur nën kontroll
- Lineariteti: Duhet të ketë një lidhje lineare midis ndryshores së varur dhe ndryshores së pavarur.
- Pavarësia: Vëzhgimet duhet të jenë të pavarura nga njëra-tjetra.
- Homoskedasticiteti: Varianca e mbetjeve duhet të jetë konstante në të gjitha nivelet e variablave të pavarur.
- Normaliteti: Mbetjet / gabimet duhet të shpërndahen normalisht.
- Pa shumëkolinearitet: Variablat e pavarur nuk duhet të jenë shumë të lidhura me njëri-tjetrin.
këto janë supozimet e OLS
Ne mund të verifikojmë rezultatet tona duke përdorur këto
- Analiza e mbetur
- R-katrore dhe e rregulluar R-katrore
- F-statistikat
Metoda alternative për OLS
a) Regresioni i kreshtës
Përfshin një term shtesë lambda në ekuacionin e regresionit, i cili penalizon tiparet me pjerrësi të madhe. Termi i dënimit, i njohur si parametri i tkurrjes, zvogëlon madhësinë e koeficientëve dhe mund të ndihmojë në parandalimin e modelit nga të qenit shumë kompleks.
b) Regresioni Lasso
Regresioni Lasso është i ngjashëm me regresionin e kreshtës, por shton një afat penaliteti që mund të rezultojë në vendosjen e disa koeficientëve në zero.
c) Rrjeta elastike
Regresioni neto elastik është një kombinim i regresionit të kreshtës dhe lasos që shton një term penaliteti L1 dhe L2 në funksionin e kostos OLS