๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์นดํ…Œ๊ณ ๋ฆฌ ์—†์Œ

ํŒŒ๋„!(15) - ๋ผ์˜ํšŒ๊ท€์™€ 4์ฐจ๋ฐฉ์ •์‹๊นŒ์ง€

๋ฐ˜์‘ํ˜•

๐Ÿฟ 'ํŒŒ๋„'๋Š” ํŒŒ์ด์Šคํฌ๋ฆฝํŠธ ๋„์ „๊ธฐ์˜ ์ค„์ž„๋ง์ž…๋‹ˆ๋‹ค.

์ง€๋‚œ ๊ฒŒ์‹œ๊ธ€์—์„œ ์—ฐ์žฌ๋˜๋Š” ๊ธ€์ž…๋‹ˆ๋‹ค. : https://itadventure.tistory.com/555

 

ํŒŒ๋„!(14) - ๋ฆฟ์ง€ ๋ฆฌ๊ทธ๋ ˆ์…˜์œผ๋กœ ์ •ํ™•๋„๊ฐ€ ๋†’์•„์ง„๋‹ค๊ตฌ?

โ€ป 'ํŒŒ๋„'๋Š” ํŒŒ์ด์Šคํฌ๋ฆฝํŠธ ๋„์ „๊ธฐ์˜ ์ค€๋ง์ž…๋‹ˆ๋‹ค. ์ง€๋‚œ ๊ฒŒ์‹œ๊ธ€์— ์—ฐ์žฌ๋˜๋Š” ๊ธ€์ž…๋‹ˆ๋‹ค : https://itadventure.tistory.com/554 ํŒŒ๋„!(13) - ์Œ? ์ธ๊ณต์ง€๋Šฅ ์ ์ค‘์œจ์ด?! - ํ‰๊ท ๊ฐ€๊ฒฉ ์ถ”๊ฐ€ 'ํŒŒ๋„'๋Š” ํŒŒ์ด์Šคํฌ๋ฆฝํŠธ ๋„์ „

itadventure.tistory.com

 

์ œ๋ชฉ์€ 4์ฐจ ๋ฐฉ์ •์‹์ด์ง€๋งŒ ์‹ค์ œ 4์ฐจ ๋ฐฉ์ •์‹์„ ๊ณ„์‚ฐํ•  ์ผ์€ ์—†์œผ๋‹ˆ ๊ฒ๋จน์ง€ ๋งˆ์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค :)

์ง€๋‚œ ์‹œ๊ฐ„์—๋Š” ์ฐจ์ˆ˜๋ฅผ ์ด์šฉํ•˜์—ฌ ๋จธ์‹ ๋Ÿฌ๋‹ ๊ฒฐ๊ณผ๊ฐ€ ์ข€ ๋” ์›๋ณธ์— ๊ทผ์ ‘ํ•˜๋„๋ก ํ–ˆ์—ˆ์ง€์š”.
ํ•˜์ง€๋งŒ ํ›ˆ๋ จ๋ฐ์ดํ„ฐ์— ํŠนํ™”๋˜๋‹ค ๋ณด๋‹ˆ ์ •์ž‘ ํ…Œ์ŠคํŠธ๋ฐ์ดํ„ฐ๋ฅผ ์˜ˆ์ธกํ•  ๋•Œ ๊ฑฐ๋ฆฌ๊ฐ€ ๋จผ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด
๋ฆฟ์ง€ ๋ฆฌ๊ทธ๋ ˆ์…˜(Ridge Regression) ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ณผ์ ํ•ฉ์ด๋ผ ๋ถˆ๋ฆฌ๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด๋ฒˆ ์‹œ๊ฐ„์—๋Š” ๋ฆฟ์ง€ ๋ฆฌ๊ทธ๋ ˆ์…˜๊ณผ ๋น„์Šทํ•œ ๊ณผ์ ํ•ฉ ๋ฌธ์ œ๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ๋ผ์˜ ๋ฆฌ๊ทธ๋ ˆ์…˜(Lasso Regression)์„ ์ ์šฉํ•ด๋ณผํ…๋ฐ์š”.
์‚ฌ์‹ค ์–ด๋–ค๊ฒŒ ๋” ๋‚˜์€์ง€ ์•„์ง ๊ฐ์€ ์•ˆ ์˜ต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์•Œ์•„๋‘ฌ์„œ ๋‚˜์ ๊ฑด ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋„์ „ํ•ด ๋ณด๊ธฐ๋กœ ํ–ˆ์Šต๋‹ˆ๋‹ค :)

 

์ฐจ์ˆ˜๋ฅผ ๋” ๋งŽ์ด ์ค˜๋ณผ๊นŒ?

 

์ง€๋‚œ๋ฒˆ์—๋Š” ์—ฐ๋„์˜ ์ œ๊ณฑ, ์›”์˜ ์ œ๊ณฑ, ํ‰๊ท ๊ฐ€์˜ ์ œ๊ณฑ ๋“ฑ์„ ์ถ”๊ฐ€ ๋ฐ์ดํ„ฐ๋กœ ๋„ฃ์–ด ์ •ํ™•๋„๊ฐ€ ๋งŽ์ด ๋†’์•„์กŒ์—ˆ์ง€์š”.
์ด๋ฒˆ์—๋Š” ์—ฐ๋„์˜ ์„ธ์ œ๊ณฑ, ์—ฐ๋„์˜ ๋„ค์ œ๊ณฑ๊ณผ ๊ฐ™์€ ๊ฐ’๋„ ์ œ๊ณตํ•˜๋„๋ก ํ•ด๋ด…์‹œ๋‹ค.
์•„์šธ๋Ÿฌ ์—ฐ๋„์™€ ์›”์„ ๊ณฑํ•œ ์ˆ˜์น˜๋„ ๋„ฃ๊ณ , ํ‰๊ท ๊ฐ€์™€ ์ผ์˜ ์ œ๊ณฑ์„ ๊ณฑํ•œ ์ˆ˜์น˜๋„ ๋„ฃ๊ณ ..
์ด๊ฑธ ์–ธ์ œ ๋‹ค ๋„ฃ์ง€....?
๊ฐ‘์ž๊ธฐ ๊ท€์ฐจ๋‹ˆ์ฆ˜์ด ์ƒ๊ฒจ์„œ ๊ทธ๋งŒ ๊ธ€์„ ์“ฐ๋ ต๋‹ˆ๋‹ค.
๊ทธ๋Ÿฌ๋ฉด ์—ฌ๋Ÿฌ๋ถ„ ์•ˆ๋…•ํžˆ- ( ์ด๋ด... )
   


   .. ๐Ÿš€ ..๐Ÿš€ ..๐Ÿš€
 

ํ ํ .. ์š”๋Š” ์ด๋Ÿฐ ๊ท€์ฐฎ์€ ์ผ์„ ํ•˜์ง€ ๋ง์ž๋Š” ๊ฒ๋‹ˆ๋‹ค.
๊ทธ๋Ÿผ ์–ด๋–ป๊ฒŒ ํ•˜๋ƒ๊ตฌ์š”?
๋ฐ”๋กœ ๋จธ์‹  ๋Ÿฌ๋‹์—๊ฒŒ ๋งก๊ธฐ๋ฉด ๋˜๋Š” ๊ฒ๋‹ˆ๋‹ค:)

์ด๋Ÿฌํ•œ  ๊ฐ๊ฐ์˜ ์›๋ณธ๋ฐ์ดํ„ฐ์˜ ์ œ๊ณฑ, ์„ธ์ œ๊ณฑ, ๋„ค์ œ๊ณฑ, ์—ฐ๋„ x ์›” ๊ฐ™์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ผ์ผํžˆ ํ•˜๋‚˜์”ฉ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฑด ๊ฝค๋‚˜ ๊ท€์ฐฎ์€ ์ผ์ž…๋‹ˆ๋‹ค.
์ง€๋‚œ๋ฒˆ ์ œ๊ณฑ์ˆ˜๋งŒ ์ถ”๊ฐ€ํ•˜๋Š”๋ฐ ์ฝ”๋“œ๊ฐ€ ์ด๋งŒํผ์ด์—ˆ๋Š”๋ฐ,

์ฃผ๊ฐ„๋งค์ถœ๋ฐ์ดํ„ฐํ›ˆ๋ จ_๋„˜ํŒŒ์ด = np.column_stack(( 
  ์ฃผ๊ฐ„๋งค์ถœ๋ฐ์ดํ„ฐํ›ˆ๋ จ_๋„˜ํŒŒ์ด ,
  ์ฃผ๊ฐ„๋งค์ถœ๋ฐ์ดํ„ฐํ›ˆ๋ จ_๋„˜ํŒŒ์ด[:,0] ** 2,
  ์ฃผ๊ฐ„๋งค์ถœ๋ฐ์ดํ„ฐํ›ˆ๋ จ_๋„˜ํŒŒ์ด[:,1] ** 2,
  ์ฃผ๊ฐ„๋งค์ถœ๋ฐ์ดํ„ฐํ›ˆ๋ จ_๋„˜ํŒŒ์ด[:,2] ** 2,
  ์ฃผ๊ฐ„๋งค์ถœ๋ฐ์ดํ„ฐํ›ˆ๋ จ_๋„˜ํŒŒ์ด[:,3] ** 2,
  ์ฃผ๊ฐ„๋งค์ถœ๋ฐ์ดํ„ฐํ›ˆ๋ จ_๋„˜ํŒŒ์ด[:,4] ** 2,
  ์ฃผ๊ฐ„๋งค์ถœ๋ฐ์ดํ„ฐํ›ˆ๋ จ_๋„˜ํŒŒ์ด[:,5] ** 2
))

๋„ค์ œ๊ณฑ๊นŒ์ง€, ๊ฒŒ๋‹ค๊ฐ€ ๊ฐ๊ฐ์˜ ํ•ญ๋ชฉ์„ ์กฐํ•ฉํ•ด์„œ ๊ณฑํ•œ๋‹ค๊ณ  ์น  ๋•Œ,
์–ดํœด ๊ทธ ์–‘์ด ๋ฌด์‹œ๋ฌด์‹œํ•˜๊ฒ ์ง€์š”. ์ƒ๊ฐํ•˜๊ธฐ๋„ ๋ณต์žกํ•˜๊ตฌ์š”.

์‹ธ์ดํ‚ท๋Ÿฐ์—๋Š” ์ด๋Ÿฐ ๋ฌด์‹ํ•œ ์ผ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ๋Šฅ์ด ๋งˆ๋ จ๋˜์–ด ์žˆ๋Š”๋ฐ์š”.
๋ฐ”๋กœ PolynomialFeatures ( ํด๋ฆฌ๋…ธ๋ฏธ์–ผ ํ”ผ์ณ ), ๋‹คํ•ญํŠน์„ฑ ๋ชจ๋“ˆ์ž…๋‹ˆ๋‹ค.
์ด ๊ธ€์—์„œ๋Š” ๊ฐ„๋‹จํžˆ 'ํด๋ฆฌ'๋ผ๋Š” ์• ์นญ(?)์„ ์ฃผ์–ด ๋ถ€๋ฅด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.'ํด๋ฆฌ'๋ชจ๋“ˆ ์‚ฌ์šฉ๋ฒ•์€ 3๋‹จ๊ณ„๋กœ ์•„๋ž˜์™€ ๊ฐ™์€๋ฐ์š”

1) ํด๋ฆฌ ๋ชจ๋“ˆ์„ ๋ถˆ๋Ÿฌ์™€ ๋‹คํ•ญ์‹ ๋ชจ๋ธ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

from sklearn.preprocessing import PolynomialFeatures

ํด๋ฆฌ = PolynomialFeatures(degree=4, include_bias=False)

2) ํ›ˆ๋ จ์šฉ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ์–ด ํ‹€์— ๋งž๊ฒŒ ํ›ˆ๋ จ์‹œํ‚ต๋‹ˆ๋‹ค.

ํด๋ฆฌ.fit(ํ›ˆ๋ จ์šฉ๋ฐ์ดํ„ฐ)

3) ํ›ˆ๋ จ๋œ ๋‹คํ•ญ์‹ ๋ชจ๋ธ์— ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ์œผ๋ฉด ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ๊ฐ€ ๋‚˜์˜ต๋‹ˆ๋‹ค.

ํ›ˆ๋ จ์šฉ๋ฐ์ดํ„ฐ_๊ฐ€๊ณต = ํด๋ฆฌ.transform(ํ›ˆ๋ จ์šฉ๋ฐ์ดํ„ฐ)
ํ…Œ์ŠคํŠธ๋ฐ์ดํ„ฐ_๊ฐ€๊ณต = ํด๋ฆฌ.transform(ํ…Œ์ŠคํŠธ๋ฐ์ดํ„ฐ)

๊ทธ๋Ÿฌ๋ฉด ์ด๋žฌ๋˜ ํ›ˆ๋ จ์šฉ ๋ฐ์ดํ„ฐ๊ฐ€,

[1420297200.0 2015 1 4 1.3012962962962962]

์ด๋Ÿฐ 'ํ›ˆ๋ จ์šฉ๋ฐ์ดํ„ฐ_๊ฐ€๊ณต'์œผ๋กœ ๋ฐ”๋€๋‹ˆ๋‹ค!!
์›๋ž˜ 6๊ฐœ์˜ ์ž๋ฃŒ๊ฐ€ 120๊ฐœ๊ฐ€ ๋„˜๊ฒŒ ๋˜์—ˆ๊ตฐ์š”!

[1.42029720e+09 2.01500000e+03 1.00000000e+00 4.00000000e+00 1.30129630e+00 
2.01724414e+18 2.86189886e+12 1.42029720e+09 5.68118880e+09 1.84822749e+09 
4.06022500e+06 2.01500000e+03 8.06000000e+03 2.62211204e+03 1.00000000e+00 
4.00000000e+00 1.30129630e+00 1.60000000e+01 5.20518519e+00 1.69337205e+00 
2.86508620e+27 4.06474693e+21 2.01724414e+18 8.06897655e+18 2.62503232e+18 
5.76672620e+15 2.86189886e+12 1.14475954e+13 3.72417838e+12 1.42029720e+09 
5.68118880e+09 1.84822749e+09 2.27247552e+10 7.39290994e+09 2.40509158e+09 
8.18135338e+09 4.06022500e+06 1.62409000e+07 5.28355575e+06 2.01500000e+03 
8.06000000e+03 2.62211204e+03 3.22400000e+04 1.04884481e+04 3.41214468e+03 
1.00000000e+00 4.00000000e+00 1.30129630e+00 1.60000000e+01 5.20518519e+00 
1.69337205e+00 6.40000000e+01 2.08207407e+01 6.77348820e+00 2.20357878e+00 
4.06927391e+36 5.77314869e+30 2.86508620e+27 1.14603448e+28 3.72832606e+27 
8.19046507e+24 4.06474693e+21 1.62589877e+22 5.28944013e+21 2.01724414e+18 
8.06897655e+18 2.62503232e+18 3.22759062e+19 1.05001293e+19 3.41594484e+18 
1.16199533e+19 5.76672620e+15 2.30669048e+16 7.50421944e+15 2.86189886e+12 
1.14475954e+13 3.72417838e+12 4.57903817e+13 1.48967135e+13 4.84625954e+12 
1.42029720e+09 5.68118880e+09 1.84822749e+09 2.27247552e+10 7.39290994e+09 
2.40509158e+09 9.08990208e+10 2.95716398e+10 9.62036633e+09 3.12973677e+09 
1.64854271e+13 8.18135338e+09 3.27254135e+10 1.06463648e+10 4.06022500e+06
1.62409000e+07 5.28355575e+06 6.49636000e+07 2.11342230e+07 6.87547153e+06 
2.01500000e+03 8.06000000e+03 2.62211204e+03 3.22400000e+04 1.04884481e+04 
3.41214468e+03 1.28960000e+05 4.19537926e+04 1.36485787e+04 4.44021124e+03 
1.00000000e+00 4.00000000e+00 1.30129630e+00 1.60000000e+01 5.20518519e+00 
1.69337205e+00 6.40000000e+01 2.08207407e+01 6.77348820e+00 2.20357878e+00 
2.56000000e+02 8.32829630e+01 2.70939528e+01 8.81431511e+00 2.86750890e+00]

์œ„ ์ˆซ์ž๋“ค์˜ ์ •์ฒด๋Š”์€ ์•„๋ž˜ ๋ช…๋ น์„ ์ด์šฉํ•ด ํŠน์„ฑ ๋ชฉ๋ก์„ ์ถœ๋ ฅํ•˜๋ฉด ์•Œ ์ˆ˜ ์žˆ๋Š”๋ฐ์š”.

print(ํด๋ฆฌ.get_feature_names_out())

๊ทธ ๊ฒฐ๊ณผ๋Š” ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค. 

['x0' 'x1' 'x2' 'x3' 'x4' 
'x0^2' 'x0 x1' 'x0 x2' 'x0 x3' 'x0 x4' 
'x1^2' 'x1 x2' 'x1 x3' 'x1 x4' 'x2^2' 
'x2 x3' 'x2 x4' 'x3^2' 'x3 x4' 'x4^2' 
'x0^3' 'x0^2 x1' 'x0^2 x2' 'x0^2 x3' 'x0^2 x4' 
'x0 x1^2' 'x0 x1 x2' 'x0 x1 x3' 'x0 x1 x4' 'x0 x2^2' 
'x0 x2 x3' 'x0 x2 x4' 'x0 x3^2' 'x0 x3 x4' 'x0 x4^2' 
'x1^3' 'x1^2 x2' 'x1^2 x3' 'x1^2 x4' 'x1 x2^2' 
'x1 x2 x3' 'x1 x2 x4' 'x1 x3^2' 'x1 x3 x4' 'x1 x4^2' 
'x2^3' 'x2^2 x3' 'x2^2 x4' 'x2 x3^2' 'x2 x3 x4' 
'x2 x4^2' 'x3^3' 'x3^2 x4' 'x3 x4^2' 'x4^3' 
'x0^4' 'x0^3 x1' 'x0^3 x2' 'x0^3 x3' 'x0^3 x4' 
'x0^2 x1^2' 'x0^2 x1 x2' 'x0^2 x1 x3' 'x0^2 x1 x4' 'x0^2 x2^2'
'x0^2 x2 x3' 'x0^2 x2 x4' 'x0^2 x3^2' 'x0^2 x3 x4' 'x0^2 x4^2' 
'x0 x1^3' 'x0 x1^2 x2' 'x0 x1^2 x3' 'x0 x1^2 x4' 'x0 x1 x2^2' 
'x0 x1 x2 x3' 'x0 x1 x2 x4' 'x0 x1 x3^2' 'x0 x1 x3 x4' 'x0 x1 x4^2' 
'x0 x2^3' 'x0 x2^2 x3' 'x0 x2^2 x4' 'x0 x2 x3^2' 'x0 x2 x3 x4' 
'x0 x2 x4^2' 'x0 x3^3' 'x0 x3^2 x4' 'x0 x3 x4^2' 'x0 x4^3' 
'x1^4' 'x1^3 x2' 'x1^3 x3' 'x1^3 x4' 'x1^2 x2^2' 
'x1^2 x2 x3' 'x1^2 x2 x4' 'x1^2 x3^2' 'x1^2 x3 x4' 'x1^2 x4^2' 
'x1 x2^3' 'x1 x2^2 x3' 'x1 x2^2 x4' 'x1 x2 x3^2' 'x1 x2 x3 x4' 
'x1 x2 x4^2' 'x1 x3^3' 'x1 x3^2 x4' 'x1 x3 x4^2' 'x1 x4^3' 
'x2^4' 'x2^3 x3' 'x2^3 x4' 'x2^2 x3^2' 'x2^2 x3 x4' 
'x2^2 x4^2' 'x2 x3^3' 'x2 x3^2 x4' 'x2 x3 x4^2' 'x2 x4^3'
'x3^4' 'x3^3 x4' 'x3^2 x4^2' 'x3 x4^3' 'x4^4']

x0, x1, x2, .. ๋“ฑ์€ ๊ฐ๊ฐ ์ฒซ๋ฒˆ์งธ, ๋‘๋ฒˆ์งธ, ์„ธ๋ฒˆ์งธ ๋ฐ์ดํ„ฐ์ด๊ณ 
'x1^2'์€  ๋‘๋ฒˆ์งธ ๋ฐ์ดํ„ฐ์˜ ์ œ๊ณฑ์ด๊ณ ,
'x0^2 x1 x4' ๋Š” ์ฒซ๋ฒˆ์งธ ๋ฐ์ดํ„ฐ์˜ ์ œ๊ณฑ, ๋‘๋ฒˆ์งธ ๋ฐ์ดํ„ฐ, 5๋ฒˆ์งธ ๋ฐ์ดํ„ฐ๋ฅผ ๊ณฑํ•œ๊ฒ๋‹ˆ๋‹ค.
๊ฐ„๋‹จํžˆ ๋งํ•ด ์ œ๊ณฑ์ด๋‚˜ ๊ณฑํ•˜๊ธฐํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜๊ฐ€ ๋ชจ๋‘ ๋‚˜์—ด๋˜์—ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

 

๋งŽ์•„์ง„ ์ฐจ์ˆ˜๋กœ ๋จธ์‹  ๋Ÿฌ๋‹์„!

 

์ด๋ ‡๊ฒŒ ๋งŽ์•„์ง„ ๋ฐ์ดํ„ฐ๋กœ ๋จธ์‹ ๋Ÿฌ๋‹ํ•˜๋ฉด ๊ฒฐ๊ณผ๊ฐ€ ์ข€ ๋” ๋‚˜์•„์งˆ๊นŒ์š”?
๋‚˜์•„์ง€๋”๋ผ๊ตฌ์š” :)

์ฃผ์˜ํ•  ์ ์€ ์ด๋ ‡๊ฒŒ ๋‹คํ•ญ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฟ”๋ฆฐ ๋‹ค์Œ์— ์Šค์ผ€์ผ๋Ÿฌ๋ฅผ ์ ์šฉํ•ด์•ผ์ง€,
๊ทธ ์ˆœ์„œ๊ฐ€ ๋ฐ”๋€Œ๋ฉด ๋จธ์‹ ๋Ÿฌ๋‹์ด ์•ˆ๋“œ๋กœ๋ฉ”๋‹ค๋กœ ๊ฐ€๋ฒ„๋ฆฝ๋‹ˆ๋‹ค :)

์ด ํ›„ ์Šค์ผ€์ผ๋Ÿฌ ์ ์šฉ ๋‹จ๊ณ„๊ฐ€ ์ด์–ด์ง‘๋‹ˆ๋‹ค.

from sklearn.preprocessing import StandardScaler
์Šค์ผ€์ผ๋Ÿฌ = StandardScaler()
์Šค์ผ€์ผ๋Ÿฌ.fit(ํ›ˆ๋ จ์šฉ๋ฐ์ดํ„ฐ_๊ฐ€๊ณต)
ํ›ˆ๋ จ์šฉ๋ฐ์ดํ„ฐ_๊ฐ€๊ณต = ์Šค์ผ€์ผ๋Ÿฌ.transform(ํ›ˆ๋ จ์šฉ๋ฐ์ดํ„ฐ_๊ฐ€๊ณต)
ํ…Œ์ŠคํŠธ๋ฐ์ดํ„ฐ_๊ฐ€๊ณต = ์Šค์ผ€์ผ๋Ÿฌ.transform(ํ…Œ์ŠคํŠธ๋ฐ์ดํ„ฐ_๊ฐ€๊ณต)


์ด๋ฒˆ์—๋Š” ๋ผ์˜ ๋ชจ๋ธ์„ ์ ์šฉํ•ด ๋ณด๋ ค๊ณ  ํ•˜๋Š”๋ฐ์š”.

๊ธฐ์™•์ด๋ฉด ๋ฆฟ์ง€ ๋ชจ๋ธ๊ณผ ๋น„๊ตํ•ด๋ณด๊ธฐ ์œ„ํ•ด ๋ฆฟ์ง€ ๋ชจ๋ธ๊ณผ ๋ผ์˜ ๋ชจ๋ธ์„ ๋™์‹œ์— ํ›ˆ๋ จ์‹œ์ผœ ๋ณด์•˜์Šต๋‹ˆ๋‹ค.
๊ทธ๋ž˜๋„ ๋˜๋ƒ๊ตฌ์š”? ์ปดํ“จํ„ฐ๊ฐ€ ๋ฒ„ํ…จ์ฃผ๊ธฐ๋งŒ ํ•œ๋‹ค๋ฉด์•ผ ๋ฌธ์ œ๋ ๊ฒŒ ์—†์ง€์š” :)

#=====================================
# ๋ฆฟ์ง€๋ชจ๋ธ
from sklearn.linear_model import Ridge
๋ฆฟ์ง€๋ชจ๋ธ = Ridge(alpha=10)
๋ฆฟ์ง€๋ชจ๋ธ.fit(ํ›ˆ๋ จ์šฉ๋ฐ์ดํ„ฐ_๊ฐ€๊ณต, ํ›ˆ๋ จ์šฉ๋ชฉํ‘œ)

# ์ข…๋ฅ˜๊ฐ€ ๋ชฉํ‘œ๊ฐ€ ์•„๋‹Œ ์ด์ƒ ์ •ํ™•๋„๋Š” ์ธก์ • ๋ถˆ๊ฐ€
print("๋ฆฟ์ง€ ํ›ˆ๋ จ์šฉ๋ชจ๋ธ ์ •ํ™•๋„")
print(๋ฆฟ์ง€๋ชจ๋ธ.score(ํ›ˆ๋ จ์šฉ๋ฐ์ดํ„ฐ_๊ฐ€๊ณต, ํ›ˆ๋ จ์šฉ๋ชฉํ‘œ))
print("๋ฆฟ์ง€ ํ…Œ์ŠคํŠธ๋ชจ๋ธ ์ •ํ™•๋„")
print(๋ฆฟ์ง€๋ชจ๋ธ.score(ํ…Œ์ŠคํŠธ๋ฐ์ดํ„ฐ_๊ฐ€๊ณต, ํ…Œ์ŠคํŠธ๋ชฉํ‘œ))

ํ›ˆ๋ จ์šฉ๋ชฉํ‘œ์˜ˆ์ธก_๋ฆฟ์ง€ = ๋ฆฟ์ง€๋ชจ๋ธ.predict(ํ›ˆ๋ จ์šฉ๋ฐ์ดํ„ฐ_๊ฐ€๊ณต)
ํ…Œ์ŠคํŠธ๋ชฉํ‘œ์˜ˆ์ธก_๋ฆฟ์ง€ = ๋ฆฟ์ง€๋ชจ๋ธ.predict(ํ…Œ์ŠคํŠธ๋ฐ์ดํ„ฐ_๊ฐ€๊ณต)

#=====================================
# ๋ผ์˜๋ชจ๋ธ
from sklearn.linear_model import Lasso
๋ผ์˜๋ชจ๋ธ = Lasso(alpha=10)
๋ผ์˜๋ชจ๋ธ.fit(ํ›ˆ๋ จ์šฉ๋ฐ์ดํ„ฐ_๊ฐ€๊ณต, ํ›ˆ๋ จ์šฉ๋ชฉํ‘œ)

# ์ข…๋ฅ˜๊ฐ€ ๋ชฉํ‘œ๊ฐ€ ์•„๋‹Œ ์ด์ƒ ์ •ํ™•๋„๋Š” ์ธก์ • ๋ถˆ๊ฐ€
print("๋ผ์˜ ํ›ˆ๋ จ์šฉ๋ชจ๋ธ ์ •ํ™•๋„")
print(๋ผ์˜๋ชจ๋ธ.score(ํ›ˆ๋ จ์šฉ๋ฐ์ดํ„ฐ_๊ฐ€๊ณต, ํ›ˆ๋ จ์šฉ๋ชฉํ‘œ))
print("๋ผ์˜ ํ…Œ์ŠคํŠธ๋ชจ๋ธ ์ •ํ™•๋„")
print(๋ผ์˜๋ชจ๋ธ.score(ํ…Œ์ŠคํŠธ๋ฐ์ดํ„ฐ_๊ฐ€๊ณต, ํ…Œ์ŠคํŠธ๋ชฉํ‘œ))

ํ›ˆ๋ จ์šฉ๋ชฉํ‘œ์˜ˆ์ธก_๋ผ์˜ = ๋ผ์˜๋ชจ๋ธ.predict(ํ›ˆ๋ จ์šฉ๋ฐ์ดํ„ฐ_๊ฐ€๊ณต)
ํ…Œ์ŠคํŠธ๋ชฉํ‘œ์˜ˆ์ธก_๋ผ์˜ = ๋ผ์˜๋ชจ๋ธ.predict(ํ…Œ์ŠคํŠธ๋ฐ์ดํ„ฐ_๊ฐ€๊ณต)

์—‡ ๊ทธ๋Ÿฐ๋ฐ ์•ŒํŒŒ๊ฐ’์„ ๋ณด๋‹ˆ ์ง€๋‚œ๋ฒˆ์—๋Š” 0.1์ด์—ˆ๋Š”๋ฐ, ์ด๋ฒˆ์—๋Š” 10 ์ด๊ตฐ์š”?

์ง€๋‚œ ๊ฒŒ์‹œ๊ธ€ ์•ŒํŒŒ๊ฐ’ ์ ์šฉ

๋ฆฟ์ง€๋ชจ๋ธ = Ridge(alpha=์•ŒํŒŒ๊ฐ’)


์ด๋ฒˆ ๊ฒŒ์‹œ๊ธ€ ์•ŒํŒŒ๊ฐ’ ์ ์šฉ

๋ฆฟ์ง€๋ชจ๋ธ = Ridge(alpha=10)
   :
๋ผ์˜๋ชจ๋ธ = Lasso(alpha=10)

์ด๋Š” ํ•ญ์ด ๋งŽ์„์ˆ˜๋ก ๋”์šฑ ๋ฐ์ดํ„ฐ์— ๊ณผ์ ํ•ฉ์ด ๋  ์ˆ˜ ์žˆ๊ธฐ ๋–„๋ฌธ์ž…๋‹ˆ๋‹ค.

๋งŒ์ผ ์ด๋ ‡๊ฒŒ ํ•ญ์ด ๋งŽ์€๋ฐ ์•ŒํŒŒ๊ฐ’ 0.1 ์ •๋„๋ฅผ ์ฃผ๊ฒŒ ๋˜๋ฉด. 2๊ฐœ์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ชจ๋‘ ์ด๋ ‡๊ฒŒ ๋˜๋ฒ„๋ฆฌ๋”๋ผ๊ตฌ์š”.
(ํšŒ์ƒ‰:์›๋ณธ, ๋…น์ƒ‰:๋ฆฟ์ง€, ๋นจ๊ฐ•:๋ผ์˜)
ํ•ญ์ด ๋งŽ์„์ˆ˜๋ก ์•ŒํŒŒ๊ฐ’์„ ๋” ๋†’๊ฒŒ ์ค˜์•ผ ํ•˜๋Š”๋ฐ, ๋ณธ ์†Œ์Šค์—์„œ ์•Œ์•„๋‚ธ ์ตœ์ ์˜ ๊ฐ’์ด 10์ž…๋‹ˆ๋‹ค.

 

์ตœ์ข… ์†Œ์Šค

 

์ด์ œ ํ•˜๋‚˜์˜ ๊ทธ๋ž˜ํ”„์— ์›๋ณธ, ๋ฆฟ์ง€, ๋ผ์˜ ๊ทธ๋ž˜ํ”„๋ฅผ ํ•จ๊ป˜ ๊ทธ๋ฆด์ผ๋งŒ ๋‚จ์•˜๊ตฐ์š”.
๊ทธ๋ž˜ํ”„์ชฝ ์†Œ์Šค๋Š” ๋ณ„๋กœ ๋ณ€๋™๋œ ๋ถ€๋ถ„์ด ์—†์–ด ( ์ƒ‰์ƒ๋งŒ ๋ณ€๋™ )
์ถ”๊ฐ€ ์„ค๋ช… ์—†์ด ์ „์ฒด ์†Œ์Šค๋กœ ๋งค๋“ญ์„ ์ง“์Šต๋‹ˆ๋‹ค.

<html> 
    <head>
      <title>๋‹คํ•ญํšŒ๊ท€ + ๋ผ์˜ ๋ฆฌ๊ทธ๋ ˆ์…˜</title>
      <link rel="stylesheet" 
        href="https://pyscript.net/alpha/pyscript.css" /> 
      <script defer 
        src="https://pyscript.net/alpha/pyscript.js"></script> 
<py-env>
  - pandas
  - matplotlib
  - seaborn
  - scikit-learn
  - paths:
    - ./NANUMMYEONGJO.TTF
    - ./NANUMMYEONGJOBOLD.TTF
    - ./common.py
</py-env>
    </head>
  <body> 
    <link rel="stylesheet" href="pytable.css"/>
<py-script>
import pandas as pd
from pyodide.http import open_url
from common import *
import numpy as np

from datetime import datetime

# ๊ฒฝ๊ณ  ๋ฌธ๊ตฌ ์ œ๊ฑฐ
import warnings
warnings.filterwarnings( 'ignore' )

import gc

# ํŒ๋‹ค์Šค์—์„œ csv ๋ฅผ ๋ฐ์ดํ„ฐ ํ”„๋ ˆ์ž„์œผ๋กœ ์ฝ์–ด์˜ด
๋งค์ถœ๋ฐ์ดํ„ฐ = pd.read_csv(open_url(
  "http://dreamplan7.cafe24.com/pyscript/csv/avocado.csv"
))      

# 3๊ฐœ ํ•„๋“œ๋งŒ ์ถ”๋ ค์„œ ๋ฐ์ดํ„ฐ ํ”„๋ ˆ์ž„์„ ๋‹ค์‹œ ๋งŒ๋“ฌ
๋งค์ถœ๋ฐ์ดํ„ฐ = ๋งค์ถœ๋ฐ์ดํ„ฐ[[
  'Date', 
  'Total Volume',
  'AveragePrice'
]]   

# ์˜๋ฌธ ์ œ๋ชฉ์„ ํ•œ๊ธ€๋กœ ๋ณ€๊ฒฝ
๋งค์ถœ๋ฐ์ดํ„ฐ.columns = [
  '๋‚ ์งœ', 
  '๋งค์ถœ๋Ÿ‰',
  'ํ‰๊ท ๊ฐ€๊ฒฉ'
]

์ฃผ๊ฐ„๋งค์ถœ_๋งค์ถœ๋Ÿ‰=๋งค์ถœ๋ฐ์ดํ„ฐ.fillna(0) \
  .groupby('๋‚ ์งœ', as_index=False)[['๋งค์ถœ๋Ÿ‰']].sum() \
  .sort_values(by='๋‚ ์งœ', ascending=True)
  
์ฃผ๊ฐ„๋งค์ถœ_ํ‰๊ท ๊ฐ€=๋งค์ถœ๋ฐ์ดํ„ฐ.fillna(0) \
  .groupby('๋‚ ์งœ', as_index=False)[['ํ‰๊ท ๊ฐ€๊ฒฉ']].mean() \
  .sort_values(by='๋‚ ์งœ', ascending=True)

์ฃผ๊ฐ„๋งค์ถœ๋ฐ์ดํ„ฐ=pd.merge(์ฃผ๊ฐ„๋งค์ถœ_๋งค์ถœ๋Ÿ‰, ์ฃผ๊ฐ„๋งค์ถœ_ํ‰๊ท ๊ฐ€, on='๋‚ ์งœ')

# ๋‚ ์งœ(์‹œ๊ฐ„๊ฐ’) ์ถ”๊ฐ€
์ฃผ๊ฐ„๋งค์ถœ๋ฐ์ดํ„ฐ.insert(1, '๋‚ ์งœ(์‹œ๊ฐ„๊ฐ’)',
  '',
  True)
  
for i in ์ฃผ๊ฐ„๋งค์ถœ๋ฐ์ดํ„ฐ['๋‚ ์งœ'].index:
  ์ฃผ๊ฐ„๋งค์ถœ๋ฐ์ดํ„ฐ['๋‚ ์งœ(์‹œ๊ฐ„๊ฐ’)'].loc[i]=time.mktime(
    datetime.strptime(
      ์ฃผ๊ฐ„๋งค์ถœ๋ฐ์ดํ„ฐ['๋‚ ์งœ'].loc[i], 
      '%Y-%m-%d'
    ).timetuple()
  )

# 10000์œผ๋กœ ๋‚˜๋ˆˆ ๋งค์ถœ๋Ÿ‰ ํ•„๋“œ ์ถ”๊ฐ€
์ฃผ๊ฐ„๋งค์ถœ๋ฐ์ดํ„ฐ.insert(3, '๋งค์ถœ๋Ÿ‰(๋งŒ)', 
  ์ฃผ๊ฐ„๋งค์ถœ๋ฐ์ดํ„ฐ['๋งค์ถœ๋Ÿ‰']/10000, 
  True)

# ํ›ˆ๋ จํ•™์Šต์šฉ์œผ๋กœ ๋‚ ์งœ๋ฅผ ์—ฐ๋„, ์›”, ์ผ๋กœ ๋‚˜๋ˆˆ๋‹ค
์ฃผ๊ฐ„๋งค์ถœ๋ฐ์ดํ„ฐ.insert(4, '์—ฐ๋„', '', True)
์ฃผ๊ฐ„๋งค์ถœ๋ฐ์ดํ„ฐ.insert(5, '์›”', '', True)
์ฃผ๊ฐ„๋งค์ถœ๋ฐ์ดํ„ฐ.insert(6, '์ผ', '', True)
์ฃผ๊ฐ„๋งค์ถœ๋ฐ์ดํ„ฐ.insert(7, '์ฃผ', '', True)

for i in ์ฃผ๊ฐ„๋งค์ถœ๋ฐ์ดํ„ฐ['๋‚ ์งœ'].index:
  ์ž„์‹œ=str(์ฃผ๊ฐ„๋งค์ถœ๋ฐ์ดํ„ฐ['๋‚ ์งœ'].loc[i]).split('-')
  ์—ฐ๋„=int(์ž„์‹œ[0])
  ์›”=int(์ž„์‹œ[1])
  ์ผ=int(์ž„์‹œ[2])
  ์ฃผ๊ฐ„๋งค์ถœ๋ฐ์ดํ„ฐ['์—ฐ๋„'].loc[i]=์—ฐ๋„
  ์ฃผ๊ฐ„๋งค์ถœ๋ฐ์ดํ„ฐ['์›”'].loc[i]=์›”
  ์ฃผ๊ฐ„๋งค์ถœ๋ฐ์ดํ„ฐ['์ผ'].loc[i]=์ผ
  ์ฃผ๊ฐ„๋งค์ถœ๋ฐ์ดํ„ฐ['์ฃผ'].loc[i]=str(
    datetime(์—ฐ๋„, ์›”, ์ผ).isocalendar()[1]
  )

createElementDiv(
  document, 
  Element, 
  'output2'
).write(์ฃผ๊ฐ„๋งค์ถœ๋ฐ์ดํ„ฐ)

์ฃผ๊ฐ„๋งค์ถœ๋ฐ์ดํ„ฐํ›ˆ๋ จ_๋„˜ํŒŒ์ด = ์ฃผ๊ฐ„๋งค์ถœ๋ฐ์ดํ„ฐ[['๋‚ ์งœ(์‹œ๊ฐ„๊ฐ’)', '์—ฐ๋„', '์›”', '์ผ', 'ํ‰๊ท ๊ฐ€๊ฒฉ']].to_numpy()
์ฃผ๊ฐ„๋งค์ถœ๋ฐ์ดํ„ฐ๋ชฉํ‘œ_๋„˜ํŒŒ์ด = ์ฃผ๊ฐ„๋งค์ถœ๋ฐ์ดํ„ฐ['๋งค์ถœ๋Ÿ‰(๋งŒ)'].to_numpy()
์ฃผ๊ฐ„๋งค์ถœ๋ฐ์ดํ„ฐ๋‚ ์งœ_๋„˜ํŒŒ์ด = ์ฃผ๊ฐ„๋งค์ถœ๋ฐ์ดํ„ฐ['๋‚ ์งœ'].to_numpy()

from sklearn.model_selection import train_test_split

ํ›ˆ๋ จ์šฉ๋ฐ์ดํ„ฐ, ํ…Œ์ŠคํŠธ๋ฐ์ดํ„ฐ, ํ›ˆ๋ จ์šฉ๋ชฉํ‘œ, ํ…Œ์ŠคํŠธ๋ชฉํ‘œ = \
  train_test_split(
    ์ฃผ๊ฐ„๋งค์ถœ๋ฐ์ดํ„ฐํ›ˆ๋ จ_๋„˜ํŒŒ์ด, 
    ์ฃผ๊ฐ„๋งค์ถœ๋ฐ์ดํ„ฐ๋ชฉํ‘œ_๋„˜ํŒŒ์ด,
    random_state=100,
    shuffle=False)


from sklearn.preprocessing import PolynomialFeatures
ํด๋ฆฌ = PolynomialFeatures(degree=4, include_bias=False) # ์ ˆํŽธ ์†์„ฑ์€ ์ œ๊ฑฐ
ํด๋ฆฌ.fit(ํ›ˆ๋ จ์šฉ๋ฐ์ดํ„ฐ) # ํŠน์„ฑ์„ ๋‹คํ•ญ์œผ๋กœ ์ž๋™์œผ๋กœ ๋ถˆ๋ฆผ
#print(ํด๋ฆฌ.get_feature_names_out())
ํ›ˆ๋ จ์šฉ๋ฐ์ดํ„ฐ_๊ฐ€๊ณต = ํด๋ฆฌ.transform(ํ›ˆ๋ จ์šฉ๋ฐ์ดํ„ฐ) # ํ•™์Šต์— ์ถ”๊ฐ€๋œ ํŒŒ๋ผ๋ฏธํ„ฐ์— ๋งž๊ฒŒ ๋‹คํ•ญ ๋ณ€ํ™˜
ํ…Œ์ŠคํŠธ๋ฐ์ดํ„ฐ_๊ฐ€๊ณต = ํด๋ฆฌ.transform(ํ…Œ์ŠคํŠธ๋ฐ์ดํ„ฐ) # ํ…Œ์ŠคํŠธ ์„ธํŠธ๋„ ๋‹คํ•ญ ๋ณ€ํ™˜, fitํ–ˆ๋˜ ํ›ˆ๋ จ poly ๋ฅผ ์‚ฌ์šฉ.

#print(ํ›ˆ๋ จ์šฉ๋ฐ์ดํ„ฐ[0]);
#print(ํ›ˆ๋ จ์šฉ๋ฐ์ดํ„ฐ_๊ฐ€๊ณต[0]);

#=====================================
from sklearn.preprocessing import StandardScaler
์Šค์ผ€์ผ๋Ÿฌ = StandardScaler()
์Šค์ผ€์ผ๋Ÿฌ.fit(ํ›ˆ๋ จ์šฉ๋ฐ์ดํ„ฐ_๊ฐ€๊ณต)
ํ›ˆ๋ จ์šฉ๋ฐ์ดํ„ฐ_๊ฐ€๊ณต = ์Šค์ผ€์ผ๋Ÿฌ.transform(ํ›ˆ๋ จ์šฉ๋ฐ์ดํ„ฐ_๊ฐ€๊ณต)
ํ…Œ์ŠคํŠธ๋ฐ์ดํ„ฐ_๊ฐ€๊ณต = ์Šค์ผ€์ผ๋Ÿฌ.transform(ํ…Œ์ŠคํŠธ๋ฐ์ดํ„ฐ_๊ฐ€๊ณต)

#=====================================
# ๋ฆฟ์ง€๋ชจ๋ธ
from sklearn.linear_model import Ridge
๋ฆฟ์ง€๋ชจ๋ธ = Ridge(alpha=10)
๋ฆฟ์ง€๋ชจ๋ธ.fit(ํ›ˆ๋ จ์šฉ๋ฐ์ดํ„ฐ_๊ฐ€๊ณต, ํ›ˆ๋ จ์šฉ๋ชฉํ‘œ)

# ์ข…๋ฅ˜๊ฐ€ ๋ชฉํ‘œ๊ฐ€ ์•„๋‹Œ ์ด์ƒ ์ •ํ™•๋„๋Š” ์ธก์ • ๋ถˆ๊ฐ€
print("๋ฆฟ์ง€ ํ›ˆ๋ จ์šฉ๋ชจ๋ธ ์ •ํ™•๋„")
print(๋ฆฟ์ง€๋ชจ๋ธ.score(ํ›ˆ๋ จ์šฉ๋ฐ์ดํ„ฐ_๊ฐ€๊ณต, ํ›ˆ๋ จ์šฉ๋ชฉํ‘œ))
print("๋ฆฟ์ง€ ํ…Œ์ŠคํŠธ๋ชจ๋ธ ์ •ํ™•๋„")
print(๋ฆฟ์ง€๋ชจ๋ธ.score(ํ…Œ์ŠคํŠธ๋ฐ์ดํ„ฐ_๊ฐ€๊ณต, ํ…Œ์ŠคํŠธ๋ชฉํ‘œ))

ํ›ˆ๋ จ์šฉ๋ชฉํ‘œ์˜ˆ์ธก_๋ฆฟ์ง€ = ๋ฆฟ์ง€๋ชจ๋ธ.predict(ํ›ˆ๋ จ์šฉ๋ฐ์ดํ„ฐ_๊ฐ€๊ณต)
ํ…Œ์ŠคํŠธ๋ชฉํ‘œ์˜ˆ์ธก_๋ฆฟ์ง€ = ๋ฆฟ์ง€๋ชจ๋ธ.predict(ํ…Œ์ŠคํŠธ๋ฐ์ดํ„ฐ_๊ฐ€๊ณต)

#=====================================
# ๋ผ์˜๋ชจ๋ธ
from sklearn.linear_model import Lasso
๋ผ์˜๋ชจ๋ธ = Lasso(alpha=10)
๋ผ์˜๋ชจ๋ธ.fit(ํ›ˆ๋ จ์šฉ๋ฐ์ดํ„ฐ_๊ฐ€๊ณต, ํ›ˆ๋ จ์šฉ๋ชฉํ‘œ)

# ์ข…๋ฅ˜๊ฐ€ ๋ชฉํ‘œ๊ฐ€ ์•„๋‹Œ ์ด์ƒ ์ •ํ™•๋„๋Š” ์ธก์ • ๋ถˆ๊ฐ€
print("๋ผ์˜ ํ›ˆ๋ จ์šฉ๋ชจ๋ธ ์ •ํ™•๋„")
print(๋ผ์˜๋ชจ๋ธ.score(ํ›ˆ๋ จ์šฉ๋ฐ์ดํ„ฐ_๊ฐ€๊ณต, ํ›ˆ๋ จ์šฉ๋ชฉํ‘œ))
print("๋ผ์˜ ํ…Œ์ŠคํŠธ๋ชจ๋ธ ์ •ํ™•๋„")
print(๋ผ์˜๋ชจ๋ธ.score(ํ…Œ์ŠคํŠธ๋ฐ์ดํ„ฐ_๊ฐ€๊ณต, ํ…Œ์ŠคํŠธ๋ชฉํ‘œ))

ํ›ˆ๋ จ์šฉ๋ชฉํ‘œ์˜ˆ์ธก_๋ผ์˜ = ๋ผ์˜๋ชจ๋ธ.predict(ํ›ˆ๋ จ์šฉ๋ฐ์ดํ„ฐ_๊ฐ€๊ณต)
ํ…Œ์ŠคํŠธ๋ชฉํ‘œ์˜ˆ์ธก_๋ผ์˜ = ๋ผ์˜๋ชจ๋ธ.predict(ํ…Œ์ŠคํŠธ๋ฐ์ดํ„ฐ_๊ฐ€๊ณต)

#=====================================

import matplotlib.pyplot as plt
import matplotlib.font_manager as fm
import matplotlib as mat

# ๊ธฐ์ค€ ํฐํŠธ ๋ณ€๊ฒฝ : legend ์˜ ํ•œ๊ธ€์„ ์ ์šฉํ•˜๋ ค๋ฉด ํ•„์ˆ˜
fm.fontManager.addfont('./NANUMMYEONGJO.TTF') #  ํฐํŠธ๋ช… : NanumMyeongjo
mat.rc('font', family='NanumMyeongjo')

###################
# ํฐํŠธ ๋ชฉ๋ก ์ถœ๋ ฅ ( ํฐํŠธ ์ถ”๊ฐ€ ํ›„ ์ •ํ™•ํ•œ ์ด๋ฆ„์„ ํ™•์ธํ•˜๋ ค๋ฉด ํ•„์š”
#font_list = [font.name for font in fm.fontManager.ttflist]
#for f in font_list:
#  print(f)      
###################        

# ๊ฐœ๋ณ„ ํฐํŠธ ์ ์šฉ
NanumMyengjo = fm.FontProperties(
  fname='./NANUMMYEONGJO.TTF'
)
NanumMyengjoBold = fm.FontProperties(
  fname='./NANUMMYEONGJOBOLD.TTF'
)

# ๊ทธ๋ž˜ํ”„
fig = plt.figure(
  figsize=(15, 7)
)

plt.xticks(
  ์ฃผ๊ฐ„๋งค์ถœ๋ฐ์ดํ„ฐํ›ˆ๋ จ_๋„˜ํŒŒ์ด[:, 0],
  ์ฃผ๊ฐ„๋งค์ถœ๋ฐ์ดํ„ฐ๋‚ ์งœ_๋„˜ํŒŒ์ด, 
  rotation=90, fontsize=8)

plt.title('์ฃผ๊ฐ„ ์•„๋ณด์นด๋„ ๋งค์ถœ๋Ÿ‰(๋ฆฟ์ง€,๋ผ์˜)',  
  fontproperties=NanumMyengjoBold, 
  fontsize=32
);

line_alpha=0.5

# ์›๋ณธ
plt.plot(        
  ํ›ˆ๋ จ์šฉ๋ฐ์ดํ„ฐ[:,0],
  ํ›ˆ๋ จ์šฉ๋ชฉํ‘œ,
  #marker='o',
  color='gray',
  label='์›๋ณธ',
  alpha=line_alpha
)
plt.plot(        
  ํ…Œ์ŠคํŠธ๋ฐ์ดํ„ฐ[:, 0],
  ํ…Œ์ŠคํŠธ๋ชฉํ‘œ,
  #marker='o',
  color='gray',
  alpha=line_alpha
)

# ๋ฆฟ์ง€
plt.plot(        
  ํ›ˆ๋ จ์šฉ๋ฐ์ดํ„ฐ[:,0],
  ํ›ˆ๋ จ์šฉ๋ชฉํ‘œ์˜ˆ์ธก_๋ฆฟ์ง€,
  marker='d',
  color='blue',
  label='ํ›ˆ๋ จํŒจํ„ด(๋ฆฟ์ง€)',
  alpha=line_alpha
)
# ๋ผ์˜
plt.plot(        
  ํ›ˆ๋ จ์šฉ๋ฐ์ดํ„ฐ[:,0],
  ํ›ˆ๋ จ์šฉ๋ชฉํ‘œ์˜ˆ์ธก_๋ผ์˜,
  marker='d',
  color='red',
  label='ํ›ˆ๋ จํŒจํ„ด(๋ผ์˜)',
  alpha=line_alpha
)

# ๋ฆฟ์ง€ ์˜ˆ์ธก
plt.plot(        
  ํ…Œ์ŠคํŠธ๋ฐ์ดํ„ฐ[:, 0],
  ํ…Œ์ŠคํŠธ๋ชฉํ‘œ์˜ˆ์ธก_๋ฆฟ์ง€,
  marker='*',
  color='green',
  label='์˜ˆ์ธกํŒจํ„ด(๋ฆฟ์ง€)',
  alpha=line_alpha
)

# ๋ผ์˜ ์˜ˆ์ธก
plt.plot(        
  ํ…Œ์ŠคํŠธ๋ฐ์ดํ„ฐ[:, 0],
  ํ…Œ์ŠคํŠธ๋ชฉํ‘œ์˜ˆ์ธก_๋ผ์˜,
  marker='*',
  color='red',
  label='์˜ˆ์ธกํŒจํ„ด(๋ผ์˜)',
  alpha=line_alpha
)

plt.xlabel('๋‚ ์งœ', fontsize=16)
plt.ylabel('๋งค์ถœ๋Ÿ‰(๋‹จ์œ„:๋งŒ)', fontsize=12)

plt.legend(
  shadow=True
)

ax = plt.gca()
# ์ถ•๋งŒ ๊ทธ๋ฆฌ๋“œ
ax.xaxis.grid(True)

# ๋ฐฐ๊ฒฝ์ƒ‰, ๋งˆ์ง„ ์กฐ์ •
ax.set_facecolor('#e8e7d2')
ax.margins(x=0.01, y=0.02)

# ์ฃผ์œ„ ์ด์ƒํ•œ ์—ฌ๋ฐฑ ์—†์• ๊ธฐ
fig.tight_layout() 
fig

</py-script> 
  </body> 
</html>

์ •ํ™•๋„๋Š” ์ง€๋‚œ๋ฒˆ๋ณด๋‹ค ์•ฝ๊ฐ„ ๋” ์ข‹์•„์กŒ์Šต๋‹ˆ๋‹ค.
๋ฆฟ์ง€๋ณด๋‹ค ๋ผ์˜๊ฐ€ ๋” ์ •ํ™•๋„๊ฐ€ ๋†’์€๋ฐ์š”. ๋ญ ์ด๊ฑด ์ƒํ™ฉ์— ๋”ฐ๋ผ ๋‹ค๋ฅด๋‹ค๊ณ  ํ•˜๋”๋ผ๊ตฌ์š”.

๋ฆฟ์ง€ ํ›ˆ๋ จ์šฉ๋ชจ๋ธ ์ •ํ™•๋„
0.7248403810426859
๋ฆฟ์ง€ ํ…Œ์ŠคํŠธ๋ชจ๋ธ ์ •ํ™•๋„
0.7511139286301507
๋ผ์˜ ํ›ˆ๋ จ์šฉ๋ชจ๋ธ ์ •ํ™•๋„
0.7256643900380024
๋ผ์˜ ํ…Œ์ŠคํŠธ๋ชจ๋ธ ์ •ํ™•๋„
0.7615459788185178

๊ทธ๋ž˜ํ”„์—์„œ ์–ด๋–ค๊ฒŒ ๋ฆฟ์ง€๊ณ  ์–ด๋–ค๊ฒŒ ๋ผ์˜์ธ์ง€๋Š” ์™ผ์ชฝ์— ํ‘œ์‹œ๋˜๋Š” ๋ฒ”๋ก€๋ฅผ ํ™•์ธํ•ด ์ฃผ์„ธ์š” :)

๋ณธ ์˜ˆ์ œ์˜ ์‹คํ–‰๊ฒฐ๊ณผ๋Š” ํฌ๋ ˆ์ด์˜ ํ™ˆํŽ˜์ด์ง€์—์„œ๋„ ํ™•์ธํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
http://dreamplan7.cafe24.com/pyscript/py10-6.html

 

๋งˆ๋ฌด~๋ฆฌ

 

์˜ค๋Š˜์€ ๋ฐ์ดํ„ฐ์˜ ์ฐจ์ˆ˜๋ฅผ 4์ฐจ ๋ฐฉ์ •์‹๊นŒ์ง€ ์ ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ,
๊ทธ๊ฒƒ๋„ ์ˆ˜๋™์ด ์•„๋‹Œ ์ž๋™์œผ๋กœ ์ ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์‚ดํŽด๋ณด์•˜์Šต๋‹ˆ๋‹ค.
์•„์šธ๋Ÿฌ ๊ณผ์ ํ•ฉ ๋ฐฉ์ง€์šฉ ๋ฆฟ์ง€ ๋ฆฌ๊ทธ๋ ˆ์…˜๊ณผ ๋ผ์˜ ๋ฆฌ๊ทธ๋ ˆ์…˜์„ ๋™์‹œ์— ๋จธ์‹ ๋Ÿฌ๋‹ํ•˜๊ณ ,
๋™์‹œ์— ๊ทธ๋ž˜ํ”„์— ํ‘œ๊ธฐํ•˜๋Š” ๋ถ€๋ถ„์„ ์‚ดํŽด๋ณด์•˜๋Š”๋ฐ์š”.

์ง€๊ธˆ๊นŒ์ง€๋Š” ์•ŒํŒŒ๊ฐ’์„ ์•Œ์•„๋‚ด๊ธฐ ์œ„ํ•ด ๊ณ„์† ํŽ˜์ด์ง€๋ฅผ ์ƒˆ๋กœ ๊ณ ์นจํ•˜๊ณ  ์ƒˆ๋กœ ๊ณ ์นจํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์จ์™”์Šต๋‹ˆ๋‹ค๋งŒ,
๋‹ค์Œ ๊ฒŒ์‹œ๊ธ€์—์„œ๋Š” ํŒŒ์ด์Šคํฌ๋ฆฝํŠธ์˜ ํŠน์žฅ์ ์„ ์‚ด๋ฆฌ๋Š” ๋ฐฉ๋ฒ•์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด ๋†“์•˜์œผ๋‹ˆ ํฌ๋ ˆ์ด๊ฐ€ ํฐ ์†Œ๋ฆฌ๋ฅผ ์น˜๋Š” ๊ฑฐ๊ฒ ์ง€์š” :)

 

์•„๋ฌด์ชผ๋ก ํ•„์š”ํ•˜์‹  ๋ถ„๊ป˜ ๋„์›€์ด ๋˜์…จ์„์ง€์š” :)
๋ฐฉ๋ฌธํ•ด์ฃผ์‹œ๋Š” ๋ชจ๋“  ๋ถ„๋“ค๊ป˜ ๋Š˜ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

์œ ์ตํ•˜์…จ๋‹ค๋ฉด ๊ณต๊ฐ  ํ•œ๋ฐฉ, ๋Œ“๊ธ€์€ ๊ตฟ์žก!
๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค~


๋‹ค์Œ ๊ฒŒ์‹œ๊ธ€ : https://itadventure.tistory.com/558

 

ํŒŒ๋„(16) - ํŒŒ์ด์Šคํฌ๋ฆฝํŠธ์˜ ํŠน์ขŒ์•™~์ ์œผ๋กœ ๋จธ์‹ ๋Ÿฌ๋‹!

๐Ÿณ 'ํŒŒ๋„'๋Š” ํฌ๋ ˆ์ด๊ฐ€ ๋„์ „ํ•˜๊ณ  ์žˆ๋Š” ํŒŒ์ด์Šคํฌ๋ฆฝํŠธ ๋„์ „๊ธฐ์˜ ์ค„์ž„๋ง์ž…๋‹ˆ๋‹ค. ์ง€๋‚œ ๊ฒŒ์‹œ๊ธ€์—์„œ ์—ฐ์žฌ๋˜๋Š” ๊ธ€์ž…๋‹ˆ๋‹ค. : https://itadventure.tistory.com/557 ํŒŒ๋„!(15) - ๋ผ์˜ํšŒ๊ท€์™€ 4์ฐจ๋ฐฉ์ •์‹๊นŒ์ง€ ๐Ÿฟ 'ํŒŒ๋„'๋Š”

itadventure.tistory.com

 

๋ฐ˜์‘ํ˜•