Programming/etc

[ํ˜ผ๊ณต ๋จธ์‹ ๋Ÿฌ๋‹+๋”ฅ๋Ÿฌ๋‹] ์„ ํ˜• ํšŒ๊ท€

mnzy๐ŸŒฑ 2024. 3. 17. 01:03

k-์ตœ๊ทผ์ ‘ ์ด์›ƒ ํšŒ๊ท€์—๋Š” ์น˜๋ช…์ ์ธ ๋‹จ์ ์ด ์กด์žฌํ•œ๋‹ค.

 

ํ•ด๋‹น ๋ชจ๋ธ์€ 50cm์˜ ๋†์–ด๋ฅผ 1.033g์ •๋„๋กœ ์˜ˆ์ธกํ•œ๋‹ค. (์‹ค์ œ๋ณด๋‹ค ํ›จ์”ฌ ๊ฐ€๋ณ๊ฒŒ ์˜ˆ์ธก)

 

์‚ฐ์ ๋„๋ฅผ ๋ณด๋ฉด, ๋†์–ด๋Š” ๊ธธ์ด๊ฐ€ ์ปค์งˆ ์ˆ˜๋ก ๋ฌด๊ฒŒ๊ฐ€ ๋Š˜์–ด๋‚œ๋‹ค. 

ํ›ˆ๋ จ ์ƒ˜ํ”Œ์— ์žˆ๋Š” ๋†์–ด ์ค‘ ๊ฐ€์žฅ ๊ธธ์ด๊ฐ€ ๊ธธ์—ˆ๋˜ ์ƒ˜ํ”Œ์ด 45 ์ •๋„์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ชจ๋ธ์€ ์ด ์ƒ˜ํ”Œ๋“ค์˜ ๋ฌด๊ฒŒ๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ธธ์ด 50cm์ธ ๋†์–ด์˜ ๋ฌด๊ฒŒ๋ฅผ ์˜ˆ์ธกํ•œ๋‹ค. ์ด๋•Œ, 45cm์ •๋„์˜ ๋†์–ด ์ƒ˜ํ”Œ๋“ค์˜ ํ‰๊ท ์ด ๋ฐ”๋กœ 1.033g์ด๋‹ค. 

 

์ฆ‰, ๋†์–ด๊ฐ€ ์•„๋ฌด๋ฆฌ ์ปค์ ธ๋„ ๋ชจ๋ธ์€ 1.033g์œผ๋กœ ์˜ˆ์ธกํ•  ๊ฒƒ์ด๋‹ค. 

 

 

ํ›ˆ๋ จ ์ƒ˜ํ”Œ์— ํฌํ•จ๋˜์ง€ ์•Š์€ ๋ฒ”์œ„์˜ ๋ฐ์ดํ„ฐ๊นŒ์ง€ ์˜ˆ์ธกํ•  ์ˆ˜ ์žˆ๊ธฐ ์œ„ํ•ด์„œ ์„ ํ˜•ํšŒ๊ท€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.


1. ์„ ํ˜•ํšŒ๊ท€

์„ ํ˜• ํšŒ๊ท€๋Š” ๋น„๊ต์  ๊ฐ„๋‹จํ•˜๊ณ  ์„ฑ๋Šฅ์ด ๋›ฐ์–ด๋‚˜๊ธฐ ๋•Œ๋ฌธ์— ๋Œ€ํ‘œ์ ์ธ ๋จธ์‹ ๋Ÿฌ๋‹ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ค‘ ํ•˜๋‚˜์ด๋‹ค. 

ํŠน์„ฑ์ด ํ•˜๋‚˜์ธ ๊ฒฝ์šฐ ์–ด๋–ค ์ง์„ ์„ ํ•™์Šตํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค. 

๋ฐ์ดํ„ฐ์˜ ํŠน์„ฑ์„ ์ž˜ ๋‚˜ํƒ€๋‚ด๋Š” ์ง์„ ์„ ๋จธ์‹ ๋Ÿฌ๋‹ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์ž๋™์œผ๋กœ ์ฐพ์•„์ฃผ๋Š” ๊ฒƒ์ด๋‹ค.

๋”ฐ๋ผ์„œ ์ด ์ง์„ ์„ ์ด์šฉํ•ด ๋”์šฑ ์ •ํ™•ํ•œ ์˜ˆ์ธก์„ ํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

(1) ์„ ํ˜•ํšŒ๊ท€ ๋ชจ๋ธ์ด ์˜ˆ์ธกํ•œ 50cm ๋†์–ด์˜ ๋ฌด๊ฒŒ

์‚ฌ์ดํ‚ท๋Ÿฐ์—์„œ๋Š” skelearn.linear_model ํŒจํ‚ค์ง€ ์•„๋ž˜์— LinearRegression ํด๋ž˜์Šค๋กœ ์„ ํ˜•ํšŒ๊ท€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ตฌํ˜„ํ•œ๋‹ค. 

from sklearn.linear_model import LinearRegression
lr = LinearRegression()

#์„ ํ˜• ํšŒ๊ท€ ๋ชจ๋ธ์„ ํ›ˆ๋ จ
lr.fit(train_input, train_target)

#50cm ๋†์–ด์— ๋Œ€ํ•œ ์˜ˆ์ธก
print(lr.predict([[50]]))

 

[1241.83860323]๋กœ, k-์ตœ๊ทผ์ ‘ ์ด์›ƒ ํšŒ๊ท€๋ณด๋‹ค ๋” ์ •ํ™•ํ•˜๊ฒŒ ์˜ˆ์ธกํ•˜์˜€๋‹ค. 

 

(2) ์ง์„ ์˜ ๋ฐฉ์ •์‹

์ง์„ ์˜ ๋ฐฉ์ •์‹ y = ax + b ์—๋Š” ๊ธฐ์šธ๊ธฐ(a)์™€ ์ ˆํŽธ(b)์ด ์กด์žฌํ•ด์•ผ ํ•œ๋‹ค.

์—ฌ๊ธฐ์— x๋ฅผ ํŠน์„ฑ์ธ ๋†์–ด์˜ ๊ธธ์ด, y๋ฅผ ํƒ€๊นƒ์ธ ๋†์–ด์˜ ๋ฌด๊ฒŒ๋กœ ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค. 

๊ธฐ์šธ๊ธฐ์™€ ์ ˆํŽธ์€ LinearRegression ํด๋ž˜์Šค๊ฐ€ ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋ฅผ ์ž…๋ ฅ๋ฐ›๊ณ , ์•Œ์•„์„œ ์ฐพ์•„์ค€๋‹ค. 

์ด๋ ‡๊ฒŒ ์ฐพ์€ ๊ธฐ์šธ๊ธฐ์™€ ์ ˆํŽธ์€ lr ๊ฐ์ฒด์˜ coef_์™€ intercept_ ์†์„ฑ์— ์ €์žฅ๋œ๋‹ค. 

๋จธ์‹ ๋Ÿฌ๋‹์—์„œ์˜ ๊ธฐ์šธ๊ธฐ = ๊ณ„์ˆ˜ = ๊ฐ€์ค‘์น˜ 
coef_์™€ intercept_์ฒ˜๋Ÿผ ๋จธ์‹ ๋Ÿฌ๋‹ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์ฐพ์€ ๊ฐ’์€ ๋ชจ๋ธ ํŒŒ๋ผ๋ฏธํ„ฐ๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. 

 

 

(3) ์„ ํ˜• ํšŒ๊ท€ ๋ชจ๋ธ - ๋†์–ด

์„ ํ˜• ํšŒ๊ท€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ๋†์–ด ๋ฐ์ดํ„ฐ์…‹์— ๋Œ€ํ•ด ์ฐพ์•„๋‚ธ ์ตœ์ ์˜ ์ง์„ ์ด๋‹ค. 

 

ํ•˜์ง€๋งŒ, ํ›ˆ๋ จ ์„ธํŠธ์™€ ํ…Œ์ŠคํŠธ ์„ธํŠธ์— ๋Œ€ํ•œ R^ ์ ์ˆ˜๋ฅผ ํ™•์ธํ•ด๋ณด๋ฉด ํ…Œ์ŠคํŠธ ์„ธํŠธ์— ๋Œ€ํ•œ ์ ์ˆ˜๊ฐ€ ๋‚ฎ์•„ ๊ณผ์†Œ์ ํ•ฉ๋จ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. 

๋˜ํ•œ, ์œ„ ๊ทธ๋ฆผ์„ ๋ณด๋ฉด ์ง์„ ์ด๊ธฐ ๋•Œ๋ฌธ์— ์–ธ์  ๊ฐ€ ๋ฌด๊ฒŒ๊ฐ€ ์Œ์ˆ˜๊ฐ€ ๋˜๋Š” ๊ฒฝ์šฐ๋„ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

 

2. ๋‹คํ•ญํšŒ๊ท€

๋†์–ด์˜ ๊ธธ์ด์™€ ๋ฌด๊ฒŒ์— ๋Œ€ํ•œ ์‚ฐ์ ๋„๋Š” ์ผ์ง์„ ์ด๋ผ๊ธฐ๋ณด๋‹ค๋Š” ์‚ฌ์‹ค ๊ณก์„ ์— ๊ฐ€๊น๋‹ค. 

๋”ฐ๋ผ์„œ, ์ตœ์ ์˜ ์ง์„ ์„ ์ฐพ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ณด๋‹ค๋Š” ์ตœ์ ์˜ ๊ณก์„ ์„ ์ฐพ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜๋ฉด ๋” ์ข‹์„ ๊ฒƒ์ด๋‹ค. 

 

 

(1) 2์ฐจ ๋ฐฉ์ •์‹ 

์ด๋Ÿฐ ๊ณก์„ ์€ 2์ฐจ ๋ฐฉ์ •์‹์„ ๊ฐ€์ง„๋‹ค. (y = ax^ + bx + c)

์ด๋ ‡๊ฒŒ 2์ฐจ ๋ฐฉ์ •์‹์˜ ๊ทธ๋ž˜ํ”„๋ฅผ ๊ทธ๋ฆฌ๊ธฐ ์œ„ํ•ด์„œ๋Š” ๊ธธ์ด(x)๋ฅผ ์ œ๊ณฑํ•œ ํ•ญ์ด ํ›ˆ๋ จ ์„ธํŠธ์— ์ถ”๊ฐ€๋˜์–ด์•ผ ํ•œ๋‹ค. 

๋„˜ํŒŒ์ด์˜ column_stack()ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜๋ฉด ๊ฐ„๋‹จํ•˜๊ฒŒ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค. 

train_poly = np.column_stack((train_input ** 2, train_input))
test_poly = np.column_stack((test_input ** 2, test_input))

 

์ƒˆ๋กญ๊ฒŒ ๋งŒ๋“  ๋ฐ์ดํ„ฐ์…‹์—๋Š” ํ›ˆ๋ จ ์„ธํŠธ์™€ ํ…Œ์ŠคํŠธ ์„ธํŠธ์˜ ์—ด์ด ๋ชจ๋‘ 2๊ฐœ๋กœ ๋Š˜์–ด๋‚ฌ๋‹ค. 

 

2์ฐจ ๋ฐฉ์ •์‹ ๊ทธ๋ž˜ํ”„๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด ํ›ˆ๋ จ ์„ธํŠธ์—๋Š” ์ œ๊ณฑํ•ญ์„ ์ถ”๊ฐ€ํ–ˆ์ง€๋งŒ, ํƒ€๊นƒ๊ฐ’์€ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•จ์„ ์ฃผ๋ชฉํ•ด์•ผ ํ•จ

(2) ํ›ˆ๋ จ ๋ฐ ์˜ˆ์ธก 

lr = LinearRegression()
lr.fit (train_poly, train_target)

print(lr.predict([[50**2, 50]]))

 

 

์ด ๋ชจ๋ธ์€ 50cm์ธ ๋†์–ด์˜ ๋ฌด๊ฒŒ์— ๋Œ€ํ•ด [1573.98423528]g์œผ๋กœ ์˜ˆ์ธกํ•˜์˜€๋‹ค.

ํ›ˆ๋ จํ•œ ๊ณ„์ˆ˜(๊ธฐ์šธ๊ธฐ)์™€ ์ ˆํŽธ์„ ์ถœ๋ ฅํ•ด๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

์ฆ‰, ๋ฌด๊ฒŒ = 1.01 * ๊ธธ์ด^ - 21.6 * ๊ธธ์ด + 116.05 ์˜ ๊ทธ๋ž˜ํ”„๋ฅผ ๊ทธ๋ฆฐ ๊ฒƒ์ด๋‹ค. 

 

์ด๋ ‡๊ฒŒ ๋‹คํ•ญ์‹์„ ์‚ฌ์šฉํ•œ ์„ ํ˜• ํšŒ๊ท€๋ฅผ ๋‹คํ•ญ ํšŒ๊ท€๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. 

์ด๋ ‡๊ฒŒ ๋จธ์‹ ๋Ÿฌ๋‹์€ ํ›ˆ๋ จ ์„ธํŠธ์—์„œ ๋ฒ—์–ด๋‚œ ํŠน์„ฑ์— ๋Œ€ํ•ด์„œ๋„ ์˜ˆ์ธกํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

+) ํ•˜์ง€๋งŒ ์—ฌ์ „ํžˆ ํ…Œ์ŠคํŠธ ์„ธํŠธ์— ๋Œ€ํ•œ ์ ์ˆ˜๊ฐ€ ์•ฝ๊ฐ„ ๋” ๋†’์€ ๊ฒƒ์œผ๋กœ ๋ณด์•„ ๊ณผ์†Œ์ ํ•ฉ์ด ์•ฝ๊ฐ„ ์žˆ๋‹ค. ์ฆ‰, ๋” ๋ณต์žกํ•œ ๋ชจ๋ธ์ด ํ•„์š”ํ•˜๋‹ค