์ƒˆ์†Œ์‹

IT & Security/AI

[์ธ๊ณต์ง€๋Šฅ] ํšŒ๊ท€๋ถ„์„

  • -
๋ฐ˜์‘ํ˜•

https://techscript24.com/how-to-start-with-numpy-for-beginners/


 

ํšŒ๊ท€ ๋ถ„์„์€ ๋ฐ์ดํ„ฐ๊ฐ„์˜ ์ƒ๊ด€๊ด€๊ณ„ ๋ชจํ˜•์„ ๊ตฌํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ํ•ด์„ํ•˜๊ฑฐ๋‚˜ ์˜ˆ์ธกํ•˜๋Š” ๊ธฐ๋ฒ•์„ ์˜๋ฏธํ•œ๋‹ค. ๊ฐ„๋‹จํ•œ ์˜ˆ๋กœ๋Š” ๋“ค์–ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฐ์ดํ„ฐ๋ฅผ ํ†ต๊ณผํ•˜๋Š” ์ง์„ ์„ ์ฐพ๋Š” ๊ธฐ๋ฒ•์ด ์žˆ๋‹ค.

import numpy as np 
import matplotlib.pyplot as plt

 

a = np.array([1,3,5,7,9])

๋ฌผ๋ก  ์ ๋“ค์ด ์ •ํ™•ํžˆ ์ง์„ ์— ์œ„์น˜๋˜์–ด์žˆ๋‹ค๋ฉด ์ด๋Š” ๋งค์šฐ ์‰ฌ์šด ๋ฌธ์ œ์ผ ๊ฒƒ์ด๋‹ค. ํ•˜์ง€๋งŒ ์‹ค์ œ ๋ฐ์ดํ„ฐ๋Š” ๋…ธ์ด์ฆˆ๋ฅผ ํฌํ•จํ•˜์—ฌ ๋ณต์žกํ•œ ํ˜•ํƒœ๋ฅผ ๋„๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๋Ÿฌํ•œ ๋ฐ์ดํ„ฐ์˜ ๊ฒฝํ–ฅ์„ฑ์„ ํŒŒ์•…ํ•˜๋Š” ๊ฒƒ์€ ๊ฒฐ์ฝ” ์‰ฌ์šด ์ผ์ด ์•„๋‹ˆ๋‹ค.

๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ๊ฐํ•ด๋ณด์ž

 

b = a + np.random.normal(0,1,5)

์œ„์˜ ๋ฐ์ดํ„ฐ์— ์ •๊ทœ๋ถ„ํฌ ํ‰๊ท 0, ํŽธ์ฐจ1์˜ ๋…ธ์ด์ฆˆ๋ฅผ ํฌํ•จํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ํฌํ•จํ•œ ๊ฒฝ์šฐ์ด๋‹ค. ์œ„์—์„œ ๋‹ค๋ฃฌ ์ง์„ ์€ ๋ถ„๋ช… ์ด๋ฒˆ ๋ฐ์ดํ„ฐ์˜ ๊ฒฝํ–ฅ์„ฑ๋„ ์–ด๋Š์ •๋„ ์ž˜ ๋‹ค๋ฃจ๊ณ  ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด๊ฒƒ์ด ์–ผ๋งˆ๋‚˜ ์ž˜ ํ‘œํ˜„ํ•œ๋‹ค๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋Š”๊ฐ€?

 

์œ„์˜ ๊ฒฝ์šฐ๋Š” ์ง์„ ์„ ํ†ตํ•ด ํ‘œํ˜„๋œ ๋ชจ๋ธ๊ณผ ์‹ค์ œ ๋ฐ์ดํ„ฐ์˜ ์˜ค์ฐจ๋ฅผ ํ†ตํ•ด ์ธก์ •ํ•œ๋‹ค. ํŠนํžˆ ์ด์™€ ๊ฐ™์ด ๋ฐ์ดํ„ฐ๊ฐ„์˜ ์ƒ๊ด€๊ด€๊ณ„๋ฅผ ์—ฐ์†๋œ ์„ ํ˜•๊ด€๊ณ„๋กœ ํ•ด์„ํ•˜๋Š” ๊ธฐ๋ฒ•์„ ์„ ํ˜•ํšŒ๊ท€๋ถ„์„์ด๋ผ๊ณ  ํ•œ๋‹ค.

 

a = np.array([1,3,5,7,9])
b = a + np.random.normal(0,1,5)
plt.plot(b,'o')
plt.plot(a)
plt.show()

 

 

 

 

์„ ํ˜• ํšŒ๊ท€๋ถ„์„์˜ ๊ธฐ์ดˆ

์•ž์„  ์˜ˆ์ œ์˜ ๊ฒฝ์šฐ๋Š” ๊ฐ€์žฅ ์˜ค์ฐจ๊ฐ€ ์ ์€ ์ง์„ ์„ ์ฐพ์€ ๊ฒฝ์šฐ๋กœ์„œ ์ด๋Ÿฌํ•œ ์ง์„ ์€ x ์˜ 1์ฐจํ•ญ๋งŒ์„ ( x ์ œ๊ณฑ ์ด์ƒ์€ ๋ฌด์‹œ ) ํฌํ•จํ•œ ๋ชจ๋ธ์„ ์˜๋ฏธํ•œ๋‹ค. (2์ฐจํ•ญ์ด ๋ผ๋ฉด ๊ตฌ๋ถ€๋Ÿฌ์ง€๊ธฐ ์‹œ์ž‘ ) ์ด๋Ÿฌํ•œ ๊ฒฝ์šฐ๋ฅผ ์„ ํ˜• ๋‹จ์ˆœ ํšŒ๊ท€๋ถ„์„์ด๋ผ ์นญํ•œ๋‹ค.

๋จผ์ € ํšŒ๊ท€๋ถ„์„์„ ์œ„ํ•œ ๊ฐ€์žฅ ๋‹จ์ˆœํ•œ ํ˜•ํƒœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑํ•ด๋ณด์ž

 

import numpy as np
import matplotlib.pyplot as plt

x = np.array([1,2,3])
y = np.array([2,4,6])
plt.ylim(0,10)
plt.xlim(0,5)
plt.plot(x,y,'o')
plt.show()

 

์ด๋Š” y = x * 2 ์˜ ๊ฐ€์žฅ ๋‹จ์ˆœํ•œ ํ˜•ํƒœ์˜ ๋ฐ์ดํ„ฐ ๋ฐฐ์น˜์ด๋ฉฐ์ด๋•Œ ์˜ค์ฐจ๋ฅผ ์ตœ์†Œํ™”ํ•˜๋Š” ์ง์„  ๋ชจ๋ธ์€ y = x * 2 ์ด๋‹ค. ์ด๋ฅผ ์–ป๊ธฐ ์œ„ํ•ด์„œ ์—ฌ๊ธฐ์„œ๋Š” sklearn ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ linear_model ์„ ์‚ฌ์šฉํ•˜๋„๋ก ํ•˜๊ฒ ๋‹ค.

 

from sklearn import linear_model 
regr = linear_model.LinearRegression()

์œ„์˜ ๋ชจ๋ธ์€ regr ์€ ์„ ํ˜• ํšŒ๊ท€๋ถ„์„์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ์ฒด์ด๋ฉฐ fit ์ด๋ผ๋Š” ๋ฉ”์†Œ๋“œ๋ฅผ ํ†ตํ•ด ํšŒ๊ท€๋ถ„์„์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์ด๋ฅผ ์ˆ˜ํ–‰ํ•ด๋ณด์ž.

 

ํšŒ๊ท€๋ถ„์„์—์„œ x ๋Š” ํ•˜๋‚˜์ด์ƒ์˜ ๋ณ€์ˆ˜๋ฅผ ๊ฐ€์ •ํ•œ๋‹ค. ๋ณ€์ˆ˜๊ฐ€ ํ•˜๋‚˜์ธ [1,2,3] ์ด๋ผ๋ฉด ์ด ํ˜•ํƒœ๋กœ๋„ ๊ดœ์ฐฎ๊ฒ ์ง€๋งŒ [3,4,5] ๊ฐ€ ํฌํ•จ๋  ๊ฒฝ์šฐ [[1,2], [2,4], [3,5]] ์ด๋Ÿฐ ์‹์œผ๋กœ ์ž…๋ ฅ๋˜๋Š” ๊ฒฝ์šฐ๋ฅผ ๊ฐ€์ •ํ•ด์„œ ์„ค๊ณ„๋˜์–ด์žˆ๋‹ค.

๊ทธ๋Ÿฌ๋ฏ€๋กœ [1,2.3] ์ด ์•„๋‹ˆ๋ผ

[[1],
 [2],
 [3]] 

์˜ ํ˜•ํƒœ๊ฐ€ ๋˜์–ด์•ผ ํ•˜๋ฉฐ ์ด๋Š” (1,3) ์˜ ๋ฐฐ์—ด์„ (3,1) ๋กœ ๋ฐ”๊พธ์–ด์ฃผ์–ด์•ผ๋งŒ ํ•จ์„ ์˜๋ฏธํ•œ๋‹ค. ์ด ๊ฒฝ์šฐ reshape ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์‰ฝ๊ฒŒ ๋ณ€ํ™˜์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

 

coef_ : ์ƒ๊ด€๊ณ„์ˆ˜

plt.ylim(0,10)
plt.xlim(0,5)
plt.plot(x,y, 'o')
plt.plot(x, x * regr.coef_)

 

์—ฐ์Šต : ํšŒ๊ท€๋ถ„์„ ์ง์ ‘ ํ•ด๋ณด๊ธฐ

๋‹ค์Œ์˜ x, y ์— ๋Œ€ํ•ด ํšŒ๊ท€๋ถ„์„์„ ํ•œ ํ›„์— ๊ทธ๋ž˜ํ”„๋กœ ์ถœ๋ ฅํ•ด๋ณด์ž.

 

x = np.array([1,2,3,4])
y = np.array([1.5, 3, 4.5, 6])

 

x = np.array([1,2,3,4])
y = np.array([1.5, 3, 4.5, 6])
# ์—ฐ์Šต๋ฌธ์ œ์˜ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜์„ธ์š”
regr.fit(x.reshape(4,1),y)
plt.plot(x,y,'o')
plt.plot(x,x * regr.coef_)
plt.show()

 

intercept_ : ์ƒ์ˆ˜ํ•ญ

์ด๋ฒˆ์—” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด์ž

 

x = np.array([1,2,3])
y = np.array([3,5,7])
plt.ylim(0,10)
plt.xlim(0,5)
plt.plot(x,y,'o')

plt.show()

 

์œ„์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์•ž์˜ ์˜ˆ์ œ์™€ ๊ฐ™์ด ์ฒ˜๋ฆฌํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜จ๋‹ค.

x = np.array([1,2,3])
y = np.array([3,5,7])
regr.fit(x.reshape(3,1), y)
plt.ylim(0,10)
plt.xlim(0,5)
plt.plot(x, y, 'o')
plt.plot(x, x * regr.coef_)

์•ž์˜ ์˜ˆ์ œ์™€ ๊ฐ™์ด ๊ธฐ์šธ๊ธฐ .. ์ฆ‰ ์ƒ๊ด€๊ณ„์ˆ˜๋Š” 2 ์ง€๋งŒ 3,5,7 ์€ ์—ฌ๊ธฐ์— ๋‹ค์‹œ 1์„ ๋”ํ•ด์ค€ ๊ฐ’์ด๋‹ค. ์š”์ปจ๋ฐ ๋‘ ๊ฐ’์˜ ๊ด€๊ณ„๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

y = x * 2 + 1 

2 ๋ผ๋Š” x ์˜ 1์ฐจํ•ญ ๊ณ„์ˆ˜์— ์ถ”๊ฐ€๋กœ 1์ด๋ผ๋Š” ์ƒ์ˆ˜ํ•ญ์„ ์ง€๋‹Œ ์‹์ด๋‹ค. ์ด ์ƒ์ˆ˜ํ•ญ์˜ ๊ฐ’์€

  regr.intercept_

์œผ๋กœ ์ €์žฅ๋œ๋‹ค.

 

์—ฐ์Šต : ์ƒ์ˆ˜ํ•ญ์„ ํฌํ•จ ๊ทธ๋ž˜ํ”„ ๊ทธ๋ฆฌ๊ธฐ

์œ„์˜ x,y ์— ๋Œ€ํ•ด regr.coef_ ์™€ regr.interceipt_ ๊นŒ์ง€ ํฌํ•จํ•ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ง์„ ์„ ๊ทธ๋ ค๋ณด์ž.

 

 

x = np.array([1,2,3])
y = np.array([3,5,7])
regr.fit(x.reshape(3,1), y)
plt.ylim(0,10)
plt.xlim(0,5)
# ์—ฐ์Šต๋ฌธ์ œ์˜ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜์„ธ์š”
plt.plot(x,y,'o')
plt.plot(x,x * regr.coef_+ regr.intercept_)
plt.show()

 

 

import numpy as np 
import matplotlib.pyplot as plt 

 

ํšŒ๊ท€๋ถ„์„

ํšŒ๊ท€ ๋ถ„์„์€ ๋ฐ์ดํ„ฐ๊ฐ„์˜ ์ƒ๊ด€๊ด€๊ณ„ ๋ชจํ˜•์„ ๊ตฌํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ํ•ด์„ํ•˜๊ฑฐ๋‚˜ ์˜ˆ์ธกํ•˜๋Š” ๊ธฐ๋ฒ•์„ ์˜๋ฏธํ•œ๋‹ค. ๊ฐ„๋‹จํ•œ ์˜ˆ๋กœ๋Š” ๋“ค์–ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฐ์ดํ„ฐ๋ฅผ ํ†ต๊ณผํ•˜๋Š” ์ง์„ ์„ ์ฐพ๋Š” ๊ธฐ๋ฒ•์ด ์žˆ๋‹ค.

a = np.array([1,3,5,7,9])

๋ฌผ๋ก  ์ ๋“ค์ด ์ •ํ™•ํžˆ ์ง์„ ์— ์œ„์น˜๋˜์–ด์žˆ๋‹ค๋ฉด ์ด๋Š” ๋งค์šฐ ์‰ฌ์šด ๋ฌธ์ œ์ผ ๊ฒƒ์ด๋‹ค.

ํ•˜์ง€๋งŒ ์‹ค์ œ ๋ฐ์ดํ„ฐ๋Š” ๋…ธ์ด์ฆˆ๋ฅผ ํฌํ•จํ•˜์—ฌ ๋ณต์žกํ•œ ํ˜•ํƒœ๋ฅผ ๋„๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๋Ÿฌํ•œ ๋ฐ์ดํ„ฐ์˜ ๊ฒฝํ–ฅ์„ฑ์„ ํŒŒ์•…ํ•˜๋Š” ๊ฒƒ์€ ๊ฒฐ์ฝ” ์‰ฌ์šด ์ผ์ด ์•„๋‹ˆ๋‹ค.

๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ๊ฐํ•ด๋ณด์ž.

 

b = a + np.random.normal(0,1,5)

 

์œ„์˜ ๋ฐ์ดํ„ฐ์— ์ •๊ทœ๋ถ„ํฌ ํ‰๊ท 0, ํŽธ์ฐจ1์˜ ๋…ธ์ด์ฆˆ๋ฅผ ํฌํ•จํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ํฌํ•จํ•œ ๊ฒฝ์šฐ์ด๋‹ค. ์œ„์—์„œ ๋‹ค๋ฃฌ ์ง์„ ์€ ๋ถ„๋ช… ์ด๋ฒˆ ๋ฐ์ดํ„ฐ์˜ ๊ฒฝํ–ฅ์„ฑ๋„ ์–ด๋Š์ •๋„ ์ž˜ ๋‹ค๋ฃจ๊ณ  ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด๊ฒƒ์ด ์–ผ๋งˆ๋‚˜ ์ž˜ ํ‘œํ˜„ํ•œ๋‹ค๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋Š”๊ฐ€?

์œ„์˜ ๊ฒฝ์šฐ๋Š” ์ง์„ ์„ ํ†ตํ•ด ํ‘œํ˜„๋œ ๋ชจ๋ธ๊ณผ ์‹ค์ œ ๋ฐ์ดํ„ฐ์˜ ์˜ค์ฐจ๋ฅผ ํ†ตํ•ด ์ธก์ •ํ•œ๋‹ค. ํŠนํžˆ ์ด์™€ ๊ฐ™์ด ๋ฐ์ดํ„ฐ๊ฐ„์˜ ์ƒ๊ด€๊ด€๊ณ„๋ฅผ ์—ฐ์†๋œ ์„ ํ˜•๊ด€๊ณ„๋กœ ํ•ด์„ํ•˜๋Š” ๊ธฐ๋ฒ•์„ ์„ ํ˜•ํšŒ๊ท€๋ถ„์„์ด๋ผ๊ณ  ํ•œ๋‹ค.

a = np.array([1,3,5,7,9])
b = a + np.random.normal(0,1,5)
plt.plot(b,'o')
plt.plot(a)
plt.show()

์„ ํ˜• ํšŒ๊ท€๋ถ„์„์˜ ๊ธฐ์ดˆ

์•ž์„  ์˜ˆ์ œ์˜ ๊ฒฝ์šฐ๋Š” ๊ฐ€์žฅ ์˜ค์ฐจ๊ฐ€ ์ ์€ ์ง์„ ์„ ์ฐพ์€ ๊ฒฝ์šฐ๋กœ์„œ ์ด๋Ÿฌํ•œ ์ง์„ ์€ x ์˜ 1์ฐจํ•ญ๋งŒ์„ ( x ์ œ๊ณฑ ์ด์ƒ์€ ๋ฌด์‹œ ) ํฌํ•จํ•œ ๋ชจ๋ธ์„ ์˜๋ฏธํ•œ๋‹ค. (2์ฐจํ•ญ์ด ๋ผ๋ฉด ๊ตฌ๋ถ€๋Ÿฌ์ง€๊ธฐ ์‹œ์ž‘ ) ์ด๋Ÿฌํ•œ ๊ฒฝ์šฐ๋ฅผ ์„ ํ˜• ๋‹จ์ˆœ ํšŒ๊ท€๋ถ„์„์ด๋ผ ์นญํ•œ๋‹ค.

๋จผ์ € ํšŒ๊ท€๋ถ„์„์„ ์œ„ํ•œ ๊ฐ€์žฅ ๋‹จ์ˆœํ•œ ํ˜•ํƒœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑํ•ด๋ณด์ž

 

 

 

import numpy as np
import matplotlib.pyplot as plt

 

x = np.array([1,2,3])
y = np.array([2,4,6])
plt.ylim(0,10)
plt.xlim(0,5)
plt.plot(x,y,'o')
plt.show()

 

 

 

์ด๋Š” y = x * 2 ์˜ ๊ฐ€์žฅ ๋‹จ์ˆœํ•œ ํ˜•ํƒœ์˜ ๋ฐ์ดํ„ฐ ๋ฐฐ์น˜์ด๋ฉฐ์ด๋•Œ ์˜ค์ฐจ๋ฅผ ์ตœ์†Œํ™”ํ•˜๋Š” ์ง์„  ๋ชจ๋ธ์€ y = x * 2 ์ด๋‹ค. ์ด๋ฅผ ์–ป๊ธฐ ์œ„ํ•ด์„œ ์—ฌ๊ธฐ์„œ๋Š” sklearn ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ linear_model ์„ ์‚ฌ์šฉํ•˜๋„๋ก ํ•˜๊ฒ ๋‹ค.

sklearn.linear_model ์‚ฌ์šฉ๋ฒ•

 

from sklearn import linear_model 

regr = linear_model.LinearRegression()

 

์œ„์˜ ๋ชจ๋ธ์€ regr ์€ ์„ ํ˜• ํšŒ๊ท€๋ถ„์„์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ์ฒด์ด๋ฉฐ fit ์ด๋ผ๋Š” ๋ฉ”์†Œ๋“œ๋ฅผ ํ†ตํ•ด ํšŒ๊ท€๋ถ„์„์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์ด๋ฅผ ์ˆ˜ํ–‰ํ•ด๋ณด์ž.

 


ํšŒ๊ท€๋ถ„์„์—์„œ x ๋Š” ํ•˜๋‚˜์ด์ƒ์˜ ๋ณ€์ˆ˜๋ฅผ ๊ฐ€์ •ํ•œ๋‹ค. ๋ณ€์ˆ˜๊ฐ€ ํ•˜๋‚˜์ธ [1,2,3] ์ด๋ผ๋ฉด ์ด ํ˜•ํƒœ๋กœ๋„ ๊ดœ์ฐฎ๊ฒ ์ง€๋งŒ [3,4,5] ๊ฐ€ ํฌํ•จ๋  ๊ฒฝ์šฐ [[1,2], [2,4], [3,5]] ์ด๋Ÿฐ ์‹์œผ๋กœ ์ž…๋ ฅ๋˜๋Š” ๊ฒฝ์šฐ๋ฅผ ๊ฐ€์ •ํ•ด์„œ ์„ค๊ณ„๋˜์–ด์žˆ๋‹ค.

 

๊ทธ๋Ÿฌ๋ฏ€๋กœ [1,2.3] ์ด ์•„๋‹ˆ๋ผ

[[1],
 [2],
 [3]] 

์˜ ํ˜•ํƒœ๊ฐ€ ๋˜์–ด์•ผ ํ•˜๋ฉฐ ์ด๋Š” (1,3) ์˜ ๋ฐฐ์—ด์„ (3,1) ๋กœ ๋ฐ”๊พธ์–ด์ฃผ์–ด์•ผ๋งŒ ํ•จ์„ ์˜๋ฏธํ•œ๋‹ค. ์ด ๊ฒฝ์šฐ reshape ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์‰ฝ๊ฒŒ ๋ณ€ํ™˜์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

 

 

coef_ : ์ƒ๊ด€๊ณ„์ˆ˜

plt.ylim(0,10)

plt.xlim(0,5)

plt.plot(x,y, 'o')

plt.plot(x, x * regr.coef_)

 

์—ฐ์Šต : ํšŒ๊ท€๋ถ„์„ ์ง์ ‘ ํ•ด๋ณด๊ธฐ

๋‹ค์Œ์˜ x, y ์— ๋Œ€ํ•ด ํšŒ๊ท€๋ถ„์„์„ ํ•œ ํ›„์— ๊ทธ๋ž˜ํ”„๋กœ ์ถœ๋ ฅํ•ด๋ณด์ž.

x = np.array([1,2,3,4])
y = np.array([1.5, 3, 4.5, 6])

 

 

 

x = np.array([1,2,3,4])

y = np.array([1.5, 3, 4.5, 6])

# ์—ฐ์Šต๋ฌธ์ œ์˜ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜์„ธ์š”

regr.fit(x.reshape(4,1),y)

plt.plot(x,y,'o')

plt.plot(x,x * regr.coef_)

plt.show()

 

 

intercept_ : ์ƒ์ˆ˜ํ•ญ

์ด๋ฒˆ์—” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด์ž

 

 

x = np.array([1,2,3])

y = np.array([3,5,7])

plt.ylim(0,10)

plt.xlim(0,5)

plt.plot(x,y,'o')

 

plt.show()

 

์œ„์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์•ž์˜ ์˜ˆ์ œ์™€ ๊ฐ™์ด ์ฒ˜๋ฆฌํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜จ๋‹ค.

 

x = np.array([1,2,3])

y = np.array([3,5,7])

regr.fit(x.reshape(3,1), y)

plt.ylim(0,10)

plt.xlim(0,5)

plt.plot(x, y, 'o')

plt.plot(x, x * regr.coef_)

 

 

์•ž์˜ ์˜ˆ์ œ์™€ ๊ฐ™์ด ๊ธฐ์šธ๊ธฐ .. ์ฆ‰ ์ƒ๊ด€๊ณ„์ˆ˜๋Š” 2 ์ง€๋งŒ 3,5,7 ์€ ์—ฌ๊ธฐ์— ๋‹ค์‹œ 1์„ ๋”ํ•ด์ค€ ๊ฐ’์ด๋‹ค. ์š”์ปจ๋ฐ ๋‘ ๊ฐ’์˜ ๊ด€๊ณ„๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

y = x * 2 + 1 

2 ๋ผ๋Š” x ์˜ 1์ฐจํ•ญ ๊ณ„์ˆ˜์— ์ถ”๊ฐ€๋กœ 1์ด๋ผ๋Š” ์ƒ์ˆ˜ํ•ญ์„ ์ง€๋‹Œ ์‹์ด๋‹ค. ์ด ์ƒ์ˆ˜ํ•ญ์˜ ๊ฐ’์€

  regr.intercept_

์œผ๋กœ ์ €์žฅ๋œ๋‹ค.

 

 

์—ฐ์Šต : ์ƒ์ˆ˜ํ•ญ์„ ํฌํ•จ ๊ทธ๋ž˜ํ”„ ๊ทธ๋ฆฌ๊ธฐ

์œ„์˜ x,y ์— ๋Œ€ํ•ด regr.coef_ ์™€ regr.interceipt_ ๊นŒ์ง€ ํฌํ•จํ•ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ง์„ ์„ ๊ทธ๋ ค๋ณด์ž.

 

 

 

 

x = np.array([1,2,3])

y = np.array([3,5,7])

regr.fit(x.reshape(3,1), y)

plt.ylim(0,10)

# ์—ฐ์Šต๋ฌธ์ œ์˜ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜์„ธ์š”

plt.plot(x,y,'o')

plt.plot(x,x * regr.coef_+ regr.intercept_)

plt.xlim(0,5)

plt.show()

 

score : ๊ฒฐ์ •๊ณ„์ˆ˜

์ด๋ฒˆ์—” ๋…ธ์ด์ฆˆ๋ฅผ ํฌํ•จํ•œ 3 * x + 2 ๋ฐ์ดํ„ฐ 50๊ฐœ๋ฅผ ์ƒ์„ฑํ•ด์„œ ์„ ํ˜• ๋‹จ์ˆœํšŒ๊ท€๋ถ„์„์„ ์ˆ˜ํ–‰ํ•ด๋ณด์ž ๋…ธ์ด์ฆˆ๋Š” ํŽธ์ฐจ 5์˜ ์ •๊ทœ๋ถ„ํฌ๋กœ ์ƒ์„ฑํ•œ๋‹ค.

 

n = 50
x = np.arange(0,n,1)
y = x * 3 + 2 + np.random.normal(0,5,n)
plt.plot(x,y, 'o')
regr.fit(x.reshape(n,1),y)
plt.plot(x, x * regr.coef_ + regr.intercept_)
plt.show()
print(regr.score(x.reshape(n,1),y))

 

 

์—ฐ์Šต : ๊ฒฐ์ •๊ณ„์ˆ˜ ๊ตฌํ•˜๊ธฐ

๋‹ค์Œ ๋ฐ์ดํ„ฐ๋ฅผ ํšŒ๊ท€๋ถ„์„ํ•˜๊ณ  ๊ฒฐ์ •๊ณ„์ˆ˜๋ฅผ ๊ตฌํ•ด๋ณด์„ธ์š”.

x = np.array([0. , 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9])
y = np.array([0.71, 0.79, 1.28, 1.28, 1.24, 1.41, 1.73, 1.88, 2.15, 2.42])

plt.plot(x,y,'o')
plt.plot(x,x * regr.coef_ +  regr.intercept_)


# ์—ฐ์Šต๋ฌธ์ œ์˜ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜์„ธ์š”
regr.fit(x.reshape(-1,1),y)
print(regr.score(x.reshape(-1,1),y))

 

 

๋‹ค์ค‘ ํšŒ๊ท€๋ถ„์„

์œ„์˜ ํšŒ๊ท€ ๋ถ„์„์€ x -> y ์˜ ์ง์„ ์˜ ์„ ํ˜•๊ด€๊ณ„์— ๋Œ€ํ•œ ํšŒ๊ท€ ๋ถ„์„์ด๋‹ค. ํ•˜์ง€๋งŒ ๋งŒ์ผ ๋ณ€์ˆ˜๊ฐ€ 2์ฐจ์› ๋ฐ์ดํ„ฐ๋ผ๋ฉด ์–ด๋–จ๊นŒ?

์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค์Œ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด์ž.

2์ฐจ์› ์‹œ๊ฐํ™”

๋‹คํ•ญ ํšŒ๊ท€๋ถ„์„

๋‹จ์ˆœ ํšŒ๊ท€ ๋ถ„์„์€ ๋ชจ๋“  ๋ฐ์ดํ„ฐ์˜ ์—ฐ๊ด€์„ฑ์„ ์ง์„ ์‹์œผ๋กœ ๊ฐ€์ •ํ•œ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ๋น„๋ก€๊ด€๊ณ„๊ฐ€ ๋Œ€๋ถ€๋ถ„ ์ง์„ ์  ์„ฑํ–ฅ์„ ๋„๋Š” ๊ฒƒ๋„ ์‚ฌ์‹ค์ด์ง€๋งŒ ๋ฐ์ดํ„ฐ์˜ ์ œ๊ณฑ์— ๋น„๋ก€ํ•ด ์ฆ๊ฐ€ํ•˜๋Š” ๊ณก์„ ํ˜•ํƒœ์˜ ์ƒ๊ด€๊ด€๊ณ„๋ฅผ ๊ฐ–๋Š” ๊ฒฝ์šฐ๋„ ์žˆ๋‹ค. ๋‹คํ•ญํšŒ๊ท€๋ถ„์„์€ ๋‹คํ•ญ์‹์ฒ˜๋Ÿผ x ์˜ 2์ฐจ์› ์ด์ƒ์˜ ๊ณ„์ˆ˜๋ฅผ ๋„์ถœ ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

 

 

n = 100
x = np.linspace(-30,30,n)
y = x ** 2 * 5 + np.random.normal(0,300,n)
plt.plot(x,y, 'o')
plt.show()

 

์ด๋ฅผ ๊ธฐ์กด์˜ ๋ฐฉ์‹์œผ๋กœ ๋‹จ์ˆœ 1์ฐจ์› ํ•ญ๋งŒ ๊ฐ€์ง„ ํšŒ๊ท€๋ถ„์„์œผ๋กœ ๊ตฌํ• ๊ฒฝ์šฐ ๊ฑฐ์˜ ์˜ˆ์ธก์ด ๋ถˆ๊ฐ€๋Šฅํ•œ ๋ชจ๋ธ์„ ์–ป๊ฒŒ๋œ๋‹ค.

 

regr.fit( x.reshape(-1,1), y ) 
plt.plot(x, y, 'o')
plt.plot(x, x * regr.coef_ + regr.intercept_ )
plt.show()
print( "R2:", regr.score( x.reshape(-1,1), y))

๊ฒฐ์ •๊ณ„์ˆ˜๊ฐ€ 0.001 ๋„ ์•ˆ๋˜๋Š” ์ฒ˜์ฐธํ•œ ๋ชจ๋ธ์ด ํƒ„์ƒํ•œ๋‹ค. ์ด๋Š” 1์ฐจ์‹์œผ๋กœ๋Š” ์ ํ•ฉํ•œ ๋ชจ๋ธ์„ ํ‘œํ˜„ํ•  ์ˆ˜๋Š” ์—†์Œ์„ ์˜๋ฏธํ•œ๋‹ค.

ํ•˜์ง€๋งŒ ์—ฌ๊ธฐ์— x ๋Œ€์‹  x์˜ ์ œ๊ณฑ์ด ๋‹ด๊ธด ๋ฐ์ดํ„ฐ๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ?

 

 

๋‘˜์˜ ๊ด€๊ณ„๊ฐ€ ์ง์„ ์— ๊ฐ€๊น๊ฒŒ ๋ฐ”๋€๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์„๊ฒƒ์ด๋‹ค. ์ด๋Š” ์œ„์˜ ์‹์„

x2 = x ** 2
y = x2 * 5 

๋กœ ๋ณ€ํ™˜ ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— y ์™€ x2 ์˜ 1์ฐจํ•ญ ๋ฌธ์ œ๋กœ ๋ณ€ํ™˜๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์ด์ œ ์ด๊ฒƒ์„ ํšŒ๊ท€ ๋ถ„์„ ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

 

regr.fit( x2.reshape(-1,1), y )
plt.plot(x2, y, 'o')
plt.plot(x2, x2 * regr.coef_ + regr.intercept_ )
plt.show() 

 

์ด์ œ y ์ด๊ฒƒ์„ x ์— ๋Œ€ํ•ด์„œ ๊ทธ๋ฆฌ๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ทธ๋ ค์ง„๋‹ค.

regr.fit( x2.reshape(-1,1), y )
plt.plot(x, y, 'o')
plt.plot(x, x**2 * regr.coef_ + regr.intercept_ )
plt.show() 

 

๋ฐ˜์‘ํ˜•
Contents

ํฌ์ŠคํŒ… ์ฃผ์†Œ๋ฅผ ๋ณต์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค

์ด ๊ธ€์ด ๋„์›€์ด ๋˜์—ˆ๋‹ค๋ฉด ๊ณต๊ฐ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.