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 * )

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

  1. Lineariteti: Duhet të ketë një lidhje lineare midis ndryshores së varur dhe ndryshores së pavarur.
  2. Pavarësia: Vëzhgimet duhet të jenë të pavarura nga njëra-tjetra.
  3. Homoskedasticiteti: Varianca e mbetjeve duhet të jetë konstante në të gjitha nivelet e variablave të pavarur.
  4. Normaliteti: Mbetjet / gabimet duhet të shpërndahen normalisht.
  5. 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

Ditë të mirë të gjithëve!!