λ”₯λŸ¬λ‹/Today I learned :

[λ”₯λŸ¬λ‹] μ„ ν˜• νšŒκ·€

주영 🐱 2021. 3. 12. 15:29
728x90
λ°˜μ‘ν˜•

μ„ ν˜• νšŒκ·€(linear regression) : κ°€μž₯ 휼λ₯­ν•œ μ˜ˆμΈ‘μ„  κΈ‹κΈ°

 

독립 λ³€μˆ˜(λ…λ¦½μ μœΌλ‘œ λ³€ν•  수 μžˆλŠ” κ°’)λ₯Ό μ‚¬μš©ν•΄ 쒅속 λ³€μˆ˜(독립 λ³€μˆ˜μ— 따라 λ³€ν•˜λŠ” κ°’)의 μ›€μ§μž„μ„ μ˜ˆμΈ‘ν•˜κ³  μ„€λͺ…ν•˜λŠ” 일.

 

λ‹¨μˆœ μ„ ν˜• νšŒκ·€ (simple linear regression) : ν•˜λ‚˜μ˜ 독립 λ³€μˆ˜ 만으둜 쒅속 λ³€μˆ˜ κ°’ μ„€λͺ…\

닀쀑 μ„ ν˜• νšŒκ·€ ( multiple linear regression) : μ—¬λŸ¬κ°œ 독립 λ³€μˆ˜ ν•„μš”

 

 

ex)   κ³΅λΆ€λŸ‰μ— λ”°λ₯Έ 성적 μ˜ˆμΈ‘κ³΅λΆ€ν•œμ‹œκ°„(x) 에 λ”°λ₯Έ 성적(y)

x={2,4,6,8}
y={81,93,91,97}

y= ax+b

x: λ…λ¦½λ³€μˆ˜ y: μ’…μ†λ³€μˆ˜
μ •ν™•ν•˜κ²Œ κ²Œμ‚°ν•˜λ €λ©΄ μƒμˆ˜ a,b값을 μ•Œμ•„μ•Ό ν•œλ‹€.
μ •ν™•ν•œ a,b값을 따라 μ›€μ§μ΄λŠ” 직선에 x값을 λŒ€μž…ν•˜λ©΄ 성적 예츑이 κ°€λŠ₯

μ„ ν˜• νšŒκ·€λŠ” κ²°κ΅­ 졜적의 a,b값을 μ°Ύμ•„λ‚΄λŠ” μž‘μ—…

 

 

μ΅œμ†Œ μ œκ³±λ²• (method of least squares) : μ£Όμ–΄μ§„ x 값이 ν•˜λ‚˜μΌ λ•Œ 적용

 

 

 

 

xκ°’: μž…λ ₯κ°’ (κ³΅λΆ€ν•œ μ‹œκ°„)

yκ°’: 좜λ ₯κ°’ (성적)

x평균 = (2+4+6+8) ÷ 4 =5

y평균 = (81+93+91+97) ÷ 4=90.5

 

기울기 a = 2.3

b = y의 평균 - (x의 평균 X 기울기 a)

y절편 = 79

 

y = 2.3x+79

 

κ³΅λΆ€ν•œ μ‹œκ°„ x 2 4 6 8
성적 y 81 93 91 97
예츑 κ°’
(xλŒ€μž…μ‹œ λ‚˜μ˜€λŠ” yκ°’)
83.6 88.2 92.8 97.4

 

 

 

μ˜€μ°¨κ°€ μ΅œμ €κ°€ λ˜λŠ” μ§μ„ μ˜ μ™„μ„±

 


μ½”λ”©μœΌλ‘œ κ΅¬ν˜„ν•˜κΈ°

 

 

 

import numpy as np

x = [2,4,6,8]
y = [81,93,91,97]

 

 

μ΅œμ†Œμ œκ³±κ·Ό κ³΅μ‹μœΌλ‘œ 기울기 a와 y절편 b κ΅¬ν•˜κΈ°

 

mean()  : x의 λͺ¨λ“  μ›μ†Œμ˜ 평균 κ΅¬ν•˜λŠ” Numpy ν•¨μˆ˜

mx : xμ›μ†Œλ“€μ˜ 평균값

my : yμ›μ†Œλ“€μ˜ 평균값

 

#λΆ„λͺ¨

divisor : λΆ„λͺ¨κ°’ (x의 κ°μ›μ†Œμ™€ xν‰κ· κ°’μ˜ μ°¨λ₯Ό 제곱)

**2 : 제곱

 

mx = np.mean(x)
my = np.mean(y)

divisor = sum([ (i-mx)**2 for i in x])

 

#λΆ„μžκ°’ (x와 y의 편차 κ³±ν•΄μ„œ ν•©ν•œ κ°’)

dividend에 μ €μž₯

def top(x,mx,y,my):
	d=0
    for i in range(len(x)):
    	d += (x[i] - mx) * (y[i] - my)
    return d
dividend = top(x,mx,y,my)

print("λΆ„λͺ¨:",divisor)
print("λΆ„μž:",dividend)

 

#기울기 a 와  y절편 b κ΅¬ν•˜κΈ°

a = dividend / divisor\
b = my- (mx*a)

print("기울기 a=",a)
print("y절편 b=",b)

 

μ‹€ν–‰κ²°κ³Ό

 

λΆ„λͺ¨: 20.0

λΆ„μž: 46.0

기울기 a= 2.3

y절편 b= 79.0

λ°˜μ‘ν˜•