profile-img
The merit of an action lies in finishing it to the end.
slide-image

์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” ์นดํ…Œ๊ณ ๋ฆฌ (๋ฒ”์ฃผํ˜•) ์ž๋ฃŒ ์ธ์ฝ”๋”ฉ ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜์ธ Mean Target Encoding์— ๋Œ€ํ•ด ์†Œ๊ฐœํ•˜๊ณ ์ž ํ•œ๋‹ค.

์‚ฌ์‹ค ๋‚˜๋Š” ๋ฒ”์ฃผํ˜• ๋ณ€์ˆ˜ ์ธ์ฝ”๋”ฉ ๋ฐฉ๋ฒ•์— ๋ผ๋ฒจ์ธ์ฝ”๋”ฉ๊ณผ ์› ํ•ซ ์ธ์ฝ”๋”ฉ๋งŒ ์žˆ๋Š” ์ค„ ์•Œ์•˜๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ์ด๋ฒˆ ์ฑ„๋ฌด๋ถˆ์ดํ–‰ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„์„ํ•  ๋•Œ ๋‚ด๊ฐ€ ํ–ˆ๋˜ ์ ˆ์ฐจ๋“ค์ด ์‚ฌ์‹ค์€ Mean Target Encoding์ด์—ˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋˜์–ด ๋†€๋ž„ ์ˆ˜๋ฐ–์— ์—†์—ˆ๋‹ค.

 

์•„๋ฌดํŠผ ๋ณธ๋ก ์œผ๋กœ ๋“ค์–ด๊ฐ€์ž.

๋ฒ”์ฃผํ˜• ๋ณ€์ˆ˜๊ฐ€ ๋ฌด์—‡์ธ์ง€๋Š”, ์ด์ „์— ๋‚ด๊ฐ€ ์ž‘์„ฑํ•˜์˜€๋˜ ๊ธ€์„ ์ฐธ๊ณ ํ•˜๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค.

https://iamnotwhale.tistory.com/5

 

[EDA] ๋ฐ์ดํ„ฐ ์ข…๋ฅ˜๋ณ„ ์‹œ๊ฐํ™” ๋ฐฉ๋ฒ•

๋ฐ์ดํ„ฐ์˜ ์ข…๋ฅ˜ ๋ฐ์ดํ„ฐ๋Š” ํฌ๊ฒŒ ๋ฒ”์ฃผํ˜•, ์ˆ˜์น˜ํ˜• ๋‘ ๊ฐ€์ง€ ๋ถ„๋ฅ˜๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค. ๋ฒ”์ฃผํ˜• ๋ฐ์ดํ„ฐ๋Š” ๋ฒ”์ฃผ/์นดํ…Œ๊ณ ๋ฆฌ๋ฅผ ๊ตฌ๋ถ„ํ•˜๋Š” ๊ฐ๊ฐ์˜ ์ด๋ฆ„์„ ๊ฐ–๋Š” ๋ฐ์ดํ„ฐ ์ข…๋ฅ˜๋‹ค. ex) ์„ฑ๋ณ„ - ์—ฌ์„ฑ, ๋‚จ์„ฑ / ํ•™๋ ฅ - ์ดˆ์กธ,

iamnotwhale.tistory.com

๊ฐ„๋‹จํžˆ ๋งํ•˜์ž๋ฉด, ๋ฒ”์ฃผํ˜• ๋ณ€์ˆ˜๋Š” ๋ฒ”์ฃผ/์นดํ…Œ๊ณ ๋ฆฌ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋“ค์ด๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ์„ฑ๋ณ„์ด๋ผ๋Š” ๋ฐ์ดํ„ฐ๋Š” ์—ฌ์„ฑ ๋˜๋Š” ๋‚จ์„ฑ์œผ๋กœ ๋ถ„๋ฅ˜๋  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋ฒ”์ฃผํ˜• ๋ณ€์ˆ˜๋‹ค.

๋ฒ”์ฃผํ˜• ๋ณ€์ˆ˜์˜ ํ•˜์œ„ ๋ถ„๋ฅ˜๋กœ ๋ช…๋ชฉํ˜• (์—ฌ์„ฑ, ๋‚จ์„ฑ), ์ˆœ์œ„ํ˜• (1๋“ฑ, 2๋“ฑ, 3๋“ฑ...) ์„ ๋ถ„๋ฅ˜ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์ด ๊ธ€์—์„œ๋Š” ๋ชฐ๋ผ๋„ ๋œ๋‹ค.

 

๋ฒ”์ฃผํ˜• ๋ณ€์ˆ˜๋Š” ๋Œ€๊ฐœ ํŒ๋‹ค์Šค ๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„์—์„œ object ํ˜•ํƒœ๋กœ ์ฃผ์–ด์ง„๋‹ค. ์ด๋ฅผ ๊ทธ๋Œ€๋กœ ๋จธ์‹ ๋Ÿฌ๋‹ ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ํˆฌ์ž…ํ•  ์ˆ˜ ์—†๋‹ค. ์™œ๋ƒํ•˜๋ฉด ์ปดํ“จํ„ฐ๋Š” ์—ฌ์„ฑ/๋‚จ์„ฑ์ด ๋ฌด์—‡์ธ์ง€ ๊ตฌ๋ณ„ํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์˜ค๋กœ์ง€ ์ˆซ์ž ํ˜•ํƒœ๋กœ ์ฃผ์–ด์กŒ์„ ๋•Œ๋งŒ ํ•ด์„ํ•  ์ˆ˜ ์žˆ๋‹ค.

๋”ฐ๋ผ์„œ ์šฐ๋ฆฌ๋Š” ์ปดํ“จํ„ฐ๊ฐ€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ์ˆซ์ž (int, float) ํ˜•ํƒœ๋กœ ๋ณ€ํ™˜ํ•ด์•ผ ํ•˜๋ฉฐ, ์ด์— ์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ์ด ์ธ์ฝ”๋”ฉ์ด๋‹ค.

 

๋ฒ”์ฃผํ˜• ๋ณ€์ˆ˜์˜ ์ธ์ฝ”๋”ฉ ๋ฐฉ๋ฒ•์œผ๋กœ๋Š” ์—ฌ๋Ÿฌ๊ฐ€์ง€๊ฐ€ ์ œ์‹œ๋  ์ˆ˜ ์žˆ์ง€๋งŒ, ๊ฐ€์žฅ ๋Œ€ํ‘œ์ ์ธ ๊ฒƒ์€ Label Encoding, One-Hot Encoding์ผ ๊ฒƒ์ด๋‹ค.

Label Encoding์€ ๋‹จ์ˆœํ•˜๊ฒŒ ์—ฌ๋Ÿฌ ์นดํ…Œ๊ณ ๋ฆฌ์— ๋ฒˆํ˜ธ๋ฅผ ๋งค๊ธด๋‹ค. ์ด ๋ฒˆํ˜ธ๋Š” ๋ฌด์—‡์ด ๋” ๋‚ซ๊ณ  ๋ณ„๋กœ์ด๊ณ  ์ด๋Ÿฐ ์ •๋ณด๋ฅผ ๊ฐ–์ง€๋Š” ์•Š๋Š”๋‹ค. ๊ทธ๋ƒฅ 1๋ฒˆ ๊ทธ๋ฃน, 2๋ฒˆ ๊ทธ๋ฃน ์ด๋Ÿฐ ๋Š๋‚Œ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.

ํ•˜์ง€๋งŒ ์ด๋Š” ํŠธ๋ฆฌ๋ฅผ ์ œ์™ธํ•œ ์ผ๋ฐ˜์ ์ธ ๋จธ์‹ ๋Ÿฌ๋‹ ์•Œ๊ณ ๋ฆฌ์ฆ˜์—์„œ ์ข‹์€ ์„ฑ๋Šฅ์„ ๋‚ด๊ธฐ ์–ด๋ ต๊ธฐ ๋•Œ๋ฌธ์— ์ž์ฃผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.

 

One-Hot Encoding์€ ํ•˜๋‚˜์˜ ์นผ๋Ÿผ๋งŒ Hot, ๋‚˜๋จธ์ง€๋Š” Coldํ•˜๋‹ค๋Š” ์˜๋ฏธ๋ฅผ ๋‹ด๊ณ  ์žˆ๋‹ค.

๋ฌด์Šจ ๋œป์ธ์ง€ ๋ฐ”๋กœ ๊ฐ์ด ์•ˆ ์˜ฌ ์ˆ˜๋„ ์žˆ์–ด ๋‹ค์‹œ ์ •๋ฆฌํ•˜์ž๋ฉด, ๋ฒ”์ฃผํ˜• ๋ณ€์ˆ˜ ๊ฐ’๋“ค์„ ๊ฐ๊ฐ ์ƒˆ๋กœ์šด ์ปฌ๋Ÿผ์œผ๋กœ ์ƒ์„ฑํ•˜๊ณ , ์ด ์ปฌ๋Ÿผ์— ํ•ด๋‹นํ•˜๋Š” ์†์„ฑ์„ ๊ฐ€์งˆ ๋•Œ 1, ์•„๋‹Œ ๊ฑด ์ „๋ถ€ 0์œผ๋กœ ํ‘œ์‹œํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

ํ‘œ๋กœ ์„ค๋ช…ํ•˜๊ฒ ๋‹ค.

ID Color
0 Pink
1 Yellow
2 Pink
3 Blue

์ด๋Ÿฐ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ์„ ๋•Œ, Color ์นผ๋Ÿผ์— ์› ํ•ซ ์ธ์ฝ”๋”ฉ์„ ์ ์šฉํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„์ด ๋ณ€ํ™˜๋œ๋‹ค.

ID Color_Pink Color_Yellow Color_Blue
0 1 0 0
1 0 1 0
2 1 0 0
3 0 0 1

Color์˜ ๋ฐ์ดํ„ฐ ์ •๋ณด๋ฅผ ๊ฐ€์ง€๋Š” ์—ด์„ ๊ฐ๊ฐ ์ƒ์„ฑํ•˜์—ฌ ์ •๋ณด๋ฅผ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๋‹ค.

์› ํ•ซ ์ธ์ฝ”๋”ฉ์€ ๋ผ๋ฒจ์ธ์ฝ”๋”ฉ์— ๋น„ํ•ด ์„ฑ๋Šฅ์€ ๋†’์ง€๋งŒ, ๋ฒ”์ฃผํ˜• ๋ณ€์ˆ˜ ๊ฐ’์ด ๋„ˆ๋ฌด ๋งŽ์„ ๊ฒฝ์šฐ ์ฐจ์›์ด ์ง€๋‚˜์น˜๊ฒŒ ์ปค์ ธ ์„ฑ๋Šฅ์ด ๋‚ฎ์•„์งˆ ์ˆ˜ ์žˆ๋‹ค.

 

๊ทธ๋Ÿผ Mean Target Encoding์€ ์–ด๋–จ ๋•Œ ์‚ฌ์šฉํ•˜๋Š”๊ฐ€?

์œ„์—์„œ ์†Œ๊ฐœํ•œ ๋‘ ์ธ์ฝ”๋”ฉ ๋ฐฉ๋ฒ•์€ ๋‹จ์ˆœํžˆ ๋ถ„๋ฅ˜์—๋งŒ ์‚ฌ์šฉํ•˜๊ณ , Target๊ณผ์˜ ๊ด€๊ณ„๋ฅผ ๊ฐ•์กฐํ•  ์ˆ˜ ์—†๋‹ค.

์› ํ•ซ ์ธ์ฝ”๋”ฉ์˜ ๊ฒฝ์šฐ ๊ฐ’์ด ๋งŽ์•„์ง€๋ฉด ์ฐจ์›์ด ์ง€๋‚˜์น˜๊ฒŒ ์ปค์ง€๋Š” ๋ฌธ์ œ๋„ ์žˆ๋‹ค.

์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋“ค์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด Mean Target Encoding์„ ์ด์šฉํ•œ๋‹ค.

 

๊ฐ„๋‹จํ•˜๊ฒŒ ์†Œ๊ฐœํ•˜์ž๋ฉด ํ•ด๋‹น ์นผ๋Ÿผ์˜ ๊ฐ™์€ ๋ผ๋ฒจ์„ ๊ฐ–๊ณ  ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋“ค์˜ Target ๊ฐ’์˜ ํ‰๊ท ์œผ๋กœ ์ธ์ฝ”๋”ฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

 

๋ฐ์ดํ„ฐ๋ฅผ ๊ทธ๋Œ€๋กœ ์˜ฌ๋ฆด ์ˆ˜๋Š” ์—†๊ฒ ์ง€๋งŒ, ์ฑ„๋ฌด๋ถˆ์ดํ–‰ ๋ฐ์ดํ„ฐ ์ค‘์—๋Š” Loan Title์ด๋ผ๋Š” ์นผ๋Ÿผ์ด ์žˆ๊ณ ,

ํ•ด๋‹น ์นผ๋Ÿผ์˜ ๋ผ๋ฒจ์€ ๊ต‰์žฅํžˆ ๋‹ค์–‘ํ•˜๋‹ค.

'Credit card refinancing', 'Debt consolidation',
'Credit card refinance', 'Credit Card Consolidation',
'Debt Consolidation', 'Home improvement', 'Consolidation', 'Other',
'relief', 'debt consolidation loan', 'Major purchase', 'Loan',
'credit card refinance', 'Medical', 'Pool', 'Vacation',
'CC consolidation', 'Medical expenses', 'Moving and relocation',
'payoff', 'Personal Loan', 'debt consolidation', 'Debt Loan',
'House', 'consolidation loan', 'consolidate', 'Credit payoff',
'Bathroom', 'Green loan', 'Debt Payoff', 'Consolidate', 'Business',
'Lending Club', 'Refinance', 'Home Improvement',

๋„ˆ๋ฌด ๋งŽ์•„์„œ ๊ทธ๋ƒฅ ์ด์ •๋„๋งŒ ๊ฐ–๊ณ  ์™”๋‹ค.

์ด๋Ÿฌํ•œ ๋ผ๋ฒจ๋“ค์— ๋”ฐ๋ผ์„œ target (์ด ์ฑ„๋ฌด๋ถˆ์ดํ–‰ ๋ฐ์ดํ„ฐ์˜ ๊ฒฝ์šฐ loan status) ๊ฐ’์˜ ๋น„์œจ, ์ฆ‰ ํ‰๊ท ์„ ๊ตฌํ•˜๊ณ ์ž ํ–ˆ๋‹ค.

(ํ‰๊ท ์€ ๊ฐ’์˜ ํ•ฉ/๊ฐ’์˜ ๊ฐœ์ˆ˜์ธ๋ฐ, target์ด 0, 1๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ‰๊ท ์ด ๋ฐ์ดํ„ฐ์—์„œ 1์˜ ๋น„์œจ๊ณผ ๊ฐ™์•„์ง„๋‹ค)

 

์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž‘์„ฑํ–ˆ๋‹ค.

# ๋ฐ์ดํ„ฐ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ
df = pd.read_csv("train_loan.csv")

# Target๊ณผ ๋ณ€์ˆ˜๋งŒ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ
data = df[['Loan Title', 'Loan Status']]

# Mean Target Encoding
ratio = pd.DataFrame(data.groupby('Loan Title').mean()).reset_index()

# ์ธ์ฝ”๋”ฉ ๊ฒฐ๊ณผ ์‹œ๊ฐํ™”
ratio.sort_values(by = 'Loan Status').plot.bar()
plt.show()

ratio๋ผ๋Š” ๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„ ์นผ๋Ÿผ์—์„œ Loan Title ์นผ๋Ÿผ์„ ๊ธฐ์ค€์œผ๋กœ groupby ๋ฉ”์„œ๋“œ๋กœ ๋ฌถ๊ณ , mean() method๋ฅผ ์ด์šฉํ•˜์—ฌ Mean Target Encoding์„ ์ง„ํ–‰ํ•˜์˜€๋‹ค.

์‹œ๊ฐํ™” ๊ฒฐ๊ณผ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์•˜๋‹ค.

๊ธ€์ž๊ฐ€ ๋งŽ์•„์„œ ์ข€... ์•ˆ ์˜ˆ์˜๊ฒŒ ๋˜๊ธด ํ–ˆ๋Š”๋ฐ ๊ฒฝํ–ฅ๋งŒ ๋ณด๋ฉด ๋œ๋‹ค.

์ธ์ฝ”๋”ฉ ๊ฒฐ๊ณผ๋กœ ํด๋Ÿฌ์Šคํ„ฐ๋ง์„ ์ง„ํ–‰ํ•˜๊ฑฐ๋‚˜ ๊ทธ๋Œ€๋กœ ์ด์šฉํ•˜๋ฉด ๋œ๋‹ค.

๋‚˜๋Š” ํด๋Ÿฌ์Šคํ„ฐ๋ง๊นŒ์ง€ ์ง„ํ–‰ํ–ˆ๋‹ค.

from sklearn.cluster import KMeans

inertia = []

for i in range(1, 11):
    kmeans_plus = KMeans(n_clusters = i, init = 'k-means++')
    kmeans_plus.fit(ratio)
    inertia.append(kmeans_plus.inertia_)

plt.plot(range(1,11), inertia, marker = 'o')

plt.xlabel('Number of clusters')
plt.ylabel('Inertia')
plt.show()

elbow method๋กœ, ํด๋Ÿฌ์Šคํ„ฐ ๊ฐœ์ˆ˜๋Š” 3๊ฐœ๋กœ ์ •ํ•˜์˜€๋‹ค.

 

๊ธฐ์กด์— ์•Œ๊ณ  ์žˆ๋˜ ์ธ์ฝ”๋”ฉ๊ณผ ๊ฐ€์žฅ ํฐ ์ฐจ์ด์ ์€ Target ๋ณ€์ˆ˜์™€์˜ ๊ด€๊ณ„๊นŒ์ง€ ์ธ์ฝ”๋”ฉ ๊ณผ์ •์—์„œ ๋‚˜ํƒ€๋‚ด๊ณ ์ž ํ–ˆ๋‹ค๋Š” ์ ์ด๋‹ค.

'CS study/๋จธ์‹ ๋Ÿฌ๋‹' Related Articles +

๋‹ค์ค‘๊ณต์„ ์„ฑ์ด๋ž€?

ํšŒ๊ท€๋ถ„์„์„ ํ•  ๋•Œ ๋‹ค์ค‘๊ณต์„ ์„ฑ์„ ๊ณ ๋ คํ•ด์•ผ ํ•œ๋‹ค๊ณ  ํ•˜๋Š”๋ฐ, ๊ณผ์—ฐ ๋‹ค์ค‘๊ณต์„ ์„ฑ์ด๋ž€ ๋ฌด์—‡์ผ๊นŒ?

๋‹ค์ค‘๊ณต์„ ์„ฑ(Multicollinearity)๋Š” ํšŒ๊ท€๋ถ„์„ ์‹œ ๋…๋ฆฝ๋ณ€์ˆ˜๋“ค ๊ฐ„์˜ ๊ฐ•ํ•œ ์ƒ๊ด€๊ด€๊ณ„๊ฐ€ ๋‚˜ํƒ€๋‚  ๋•Œ๋ฅผ ์ผ์ปซ๋Š” ์šฉ์–ด๋‹ค. ๋งŒ์•ฝ ๋ณ€์ˆ˜๋“ค ๊ฐ„ ๋‹ค์ค‘๊ณต์„ ์„ฑ์ด ๋†’๋‹ค๊ณ  ํŒ๋‹จ๋˜๋ฉด, ์ด ๋ณ€์ˆ˜๋“ค์€ ๋”์ด์ƒ ๋…๋ฆฝ๋ณ€์ˆ˜๋ผ๊ณ  ๋ณด๊ธฐ ์–ด๋ ต๋‹ค. ํšŒ๊ท€๋ถ„์„์˜ ์ „์ œ์ธ ๋…๋ฆฝ๋ณ€์ˆ˜ X๋“ค์„ ํ†ตํ•ด Y๋ฅผ ์˜ˆ์ธกํ•œ๋‹ค๋Š” ๊ฐ€์ •์ด ์„ฑ๋ฆฝํ•  ์ˆ˜ ์—†๊ฒŒ ๋˜๋ฏ€๋กœ ๋‹ค์ค‘๊ณต์„ ์„ฑ์€ ํšŒ๊ท€๋ถ„์„์˜ ์‹ฌ๊ฐํ•œ ๋ฌธ์ œ ์ค‘ ํ•˜๋‚˜๋กœ ์†๊ผฝํžŒ๋‹ค.

 

VIF

Variance Inflation Factor์˜ ์•ฝ์ž์ธ VIF๋Š” ํ•œ๊ตญ์–ด๋กœ ๋ฒˆ์—ญํ•˜๋ฉด ๋ถ„์‚ฐ ํŒฝ์ฐฝ ์ธ์ˆ˜๋‹ค. ์ด ๊ฐ’์€ ๋…๋ฆฝ๋ณ€์ˆ˜์˜ ๋‹ค์ค‘๊ณต์„ ์„ฑ์„ ํŒ๋‹จํ•˜๊ธฐ ์œ„ํ•œ ์ง€ํ‘œ๋กœ ์‚ฌ์šฉ๋˜๋ฉฐ ๊ณ„์‚ฐ์‹์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

r_i๋Š” i๋ฒˆ์งธ ๋ณ€์ˆ˜๋ฅผ ์ œ์™ธํ•œ ํšŒ๊ท€์‹์˜ R^2๊ฐ’์ด๋‹ค.

๋ณดํ†ต VIF ๊ฐ’์ด 10์„ ์ดˆ๊ณผํ•˜๋ฉด ๋‹ค์ค‘๊ณต์„ ์„ฑ์ด ์œ ์˜๋ฏธํ•˜๊ฒŒ ๋†’๋‹ค๊ณ  ํŒ๋‹จํ•˜์—ฌ ์ œ๊ฑฐํ•œ๋‹ค. ์™œ ํ•˜ํ•„ 10์ผ๊นŒ?

VIF > 10 ์‹์„ ์œ„์— ๋‚˜์˜จ ์ˆ˜์‹์œผ๋กœ ๋Œ€์ฒดํ•˜์—ฌ ๊ณ„์‚ฐํ•  ๊ฒฝ์šฐ, r_i > 0.9 ๋ผ๋Š” ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜จ๋‹ค. ์ฆ‰ i๋ฒˆ์งธ ๋ณ€์ˆ˜๊ฐ€ ์‹์—์„œ ๋น ์ ธ๋„ ๋‚˜๋จธ์ง€๊ฐ€ Y๋ฅผ 90% ์ด์ƒ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๋œป์ด๋‹ค. ์ฆ‰ ์ œ๊ฑฐํ•ด์„œ ๋‹ค๋ฅธ ๊ฐ’๋“ค๋กœ ๋Œ€์ฒดํ•ด๋„ ์œ ์˜๋ฏธํ•˜๊ฒŒ ์˜ˆ์ธก์ด ๋‹ฌ๋ผ์ง€์ง€ ์•Š๋Š”๋‹ค.

 

VIF in python

ํŒŒ์ด์ฌ์—์„œ VIF๋ฅผ ๊ตฌํ•˜๊ธฐ ์œ„ํ•ด ๋ชจ๋“ˆ์„ ์ด์šฉํ•œ๋‹ค.

from statsmodels.stats.outliers_influence import variance_inflation_factor as vif

ํŠน์ • ๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„์—์„œ ๋…๋ฆฝ๋ณ€์ˆ˜๋ณ„๋กœ VIF๋ฅผ ๊ตฌํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

vif_factors = [vif(X.values, i) for i in range(0, X.shape[1])]
vif_report = pd.DataFrame({"variable": X.columns, "VIF Factors": vif_factors})

vif_report๋Š” ๊ฐ ๋…๋ฆฝ๋ณ€์ˆ˜๋ณ„ VIF๊ฐ€ ์ €์žฅ๋œ ๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„์ด๋ฏ€๋กœ, ์ด๋ฅผ ํ™•์ธํ•˜๋ฉด ์–ด๋–ค ๋…๋ฆฝ๋ณ€์ˆ˜์˜ VIF๊ฐ€ ํฐ์ง€ ์ž‘์€์ง€ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๊ฒƒ์„ ๋ณด๊ณ  VIF๊ฐ€ 10์„ ์ดˆ๊ณผํ•œ๋‹ค๋ฉด ๊ฐ’์„ ์ œ๊ฑฐํ•˜๋ฉด ๋œ๋‹ค.

 

๋‹ค๋ฅธ ํšŒ๊ท€๋ถ„์„์—์„œ๋„ ๋‹ค์ค‘๊ณต์„ ์„ฑ์„ ๊ณ ๋ คํ•ด์•ผ ํ• ๊นŒ?

์ด ๋ถ€๋ถ„์— ๋Œ€ํ•ด์„œ ๋ช…ํ™•ํ•œ ๋‹ต์„ ์ฐพ์ง€ ๋ชปํ–ˆ๋‹ค. ์ธํ„ฐ๋„ท ์ž๋ฃŒ๋ฅผ ๋’ค์ ธ๋ด๋„ ์„ ํ˜•ํšŒ๊ท€๋ฅผ ์ œ์™ธํ•œ ๋‹ค๋ฅธ ํšŒ๊ท€๋ถ„์„(์˜ˆ๋ฅผ ๋“ค์–ด ๋กœ์ง€์Šคํ‹ฑ ํšŒ๊ท€)์— ๋‹ค์ค‘๊ณต์„ ์„ฑ์„ ๊ณ ๋ คํ•ด์•ผํ•˜๋Š”์ง€์— ๊ด€ํ•œ ๋ฌธ์ œ์— ๋ชจ๋‘ ๋‹ค๋ฅธ ๋‹ต์„ ๋‚ด๋†“์•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

๊ทธ๋ ‡์ง€๋งŒ ๋‹ค์ค‘๊ณต์„ ์„ฑ์˜ ๋ณธ์งˆ๊ณผ ํšŒ๊ท€๋ถ„์„์˜ ๊ฐ€์ •์„ ์ƒ๊ฐํ•ด๋ณธ๋‹ค๋ฉด, ๋‹ค์ค‘๊ณต์„ ์„ฑ์œผ๋กœ ์ธํ•ด ๋…๋ฆฝ๋ณ€์ˆ˜๋“ค ๊ฐ„์˜ ๋…๋ฆฝ์„ฑ์ด ๋ณด์žฅ๋˜์ง€ ์•Š์„ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์œผ๋ฏ€๋กœ, ๋ชจ๋“  ํšŒ๊ท€๋ถ„์„์—์„œ ๋‹ค์ค‘๊ณต์„ ์„ฑ์„ ๊ณ ๋ คํ•ด์•ผ ํ•  ๊ฒƒ์ด๋ผ๊ณ  ํŒ๋‹จํ•˜์˜€๋‹ค.

์‚ฌ์‹ค ๋‚ด ๋ง์ด ์˜ณ์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ๋‹ค. ์ด ๋ถ€๋ถ„์€ ๋…ผ๋ฌธ ๊ฐ™์€ ์ž๋ฃŒ๋ฅผ ๋” ์ฐพ์•„๋ณผ ํ•„์š”๊ฐ€ ์žˆ๋‹ค.

'CS study/๋จธ์‹ ๋Ÿฌ๋‹' Related Articles +

1. ์ƒˆ repository ์ƒ์„ฑ

github์— ๋กœ๊ทธ์ธํ•˜์—ฌ ์ƒ๋‹จ +๋ฒ„ํŠผ์„ ํ†ตํ•ด ์ƒˆ๋กœ์šด repository๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

README file ์ถ”๊ฐ€๋ฅผ ํ•ด๋‘๋ฉด ๋‚˜์ค‘์— repository ์„ค๋ช… ์ถ”๊ฐ€ํ•  ๋•Œ ์š”๊ธดํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

repository์˜ ์ฃผ์†Œ๊ฐ€ ์žˆ์–ด์•ผ ํ•ด๋‹น repository์— ํŒŒ์ผ ์—…๋กœ๋“œ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.

 

2. ์›ํ•˜๋Š” ํŒŒ์ผ ์œ„์น˜์—์„œ git ์‹คํ–‰

https://git-scm.com/

 

Git

 

git-scm.com

์œ„ ํŽ˜์ด์ง€์—์„œ git์„ ๋‹ค์šด๋กœ๋“œ ๋ฐ›์•„ ์„ค์น˜ํ•œ๋‹ค.

์—…๋กœ๋“œ๋ฅผ ์›ํ•˜๋Š” ํŒŒ์ผ์ด ์žˆ๋Š” ํด๋”๋ฅผ ์—ด๊ณ  ๋นˆ ๊ณต๊ฐ„์— ๋งˆ์šฐ์Šค ์šฐํด๋ฆญ์„ ํ•˜์—ฌ Git Bash Here๋ฅผ ํด๋ฆญํ•œ๋‹ค.

 

3. git init

์ฐฝ์— ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž…๋ ฅํ•œ๋‹ค.

git init

 

4. git add

git add test.txt

์›ํ•˜๋Š” ํŒŒ์ผ์„ git add ๋‹ค์Œ์— ์ž…๋ ฅํ•ด์ค€๋‹ค.

ํ•ด๋‹น ์œ„์น˜์˜ ๋ชจ๋“  ํŒŒ์ผ์„ addํ•˜๋ ค๋ฉด . ๋งŒ ์ž…๋ ฅํ•˜๋ฉด ๋œ๋‹ค.

 

5. git commit

git commit -m "๋ฉ”์‹œ์ง€ ๋‚ด์šฉ"

์ปค๋ฐ‹ํ•  ์ค€๋น„๋ฅผ ํ•œ๋‹ค. ์ ๊ณ  ์‹ถ์€ ๋ฉ”์‹œ์ง€ ๋‚ด์šฉ์„ ๋”ฐ์˜ดํ‘œ ์•ˆ์— ์ ๋Š”๋‹ค.

 

6. git remote add origin

git remote add origin ์ฃผ์†Œ

์›๊ฒฉ ์ €์žฅ์†Œ์™€ ์—ฐ๊ฒฐํ•œ๋‹ค. ์—ฐ๊ฒฐํ•˜๊ณ ์ž ํ•˜๋Š” ๋‚ด github repository ์ฃผ์†Œ๋ฅผ ๋ณต์‚ฌํ•ด์„œ ๋ถ™์—ฌ๋„ฃ์œผ๋ฉด ๋œ๋‹ค.

๋‹จ! git ํ”„๋กœ๊ทธ๋žจ์—์„œ Ctrl+V๋Š” ์ž‘๋™ํ•˜์ง€ ์•Š์œผ๋‹ˆ ๋งˆ์šฐ์Šค ์šฐํด๋ฆญ์œผ๋กœ ๋ถ™์—ฌ๋„ฃ์ž.

 

8. git push

git push origin master

๋Œ€๋ง์˜ push ์ž‘์—…! ์›๊ฒฉ ์ €์žฅ์†Œ์— ์šฐ๋ฆฌ๊ฐ€ ์ถ”๊ฐ€ํ•ด๋’€๋˜ ํŒŒ์ผ๋“ค์„ ์—…๋กœ๋“œํ•˜์ž.

main ๋ถ€๋ถ„์— ๋‹ค๋ฅธ branch ์ด๋ฆ„์„ ์ ์œผ๋ฉด ๊ทธ branch๋กœ ์—…๋กœ๋“œ๊ฐ€ ๋œ๋‹ค.

์ค‘๊ฐ„ ์˜ค๋ฅ˜๋Š” ๋ฌด์‹œ ๋ฐ”๋žŒ

https://github.com/iamnotwhale/testtest

์—…๋กœ๋“œ ์„ฑ๊ณตํ•œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

GitHub - iamnotwhale/testtest

Contribute to iamnotwhale/testtest development by creating an account on GitHub.

github.com

์•„์ง๋„ git ์“ฐ๋ฉด์„œ ์˜ค๋ฅ˜ ๋งŽ์ด ๋‚˜์˜ค๋Š” ๋‚˜์ง€๋งŒ ใ… ใ…  ์ผ๋‹จ ์—…๋กœ๋“œ ๊ณผ์ •์ด๋ผ๋„ ๋œ ํ—ท๊ฐˆ๋ฆฌ๋ผ๊ณ  ์ž‘์„ฑํ•ด๋ณธ๋‹ค.

๋‹ค์Œ์—๋Š” ๋‚ด๊ฐ€ git ์‚ฌ์šฉํ•˜๋ฉด์„œ ๋งŒ๋‚œ ์˜ค๋ฅ˜๋“ค์— ๋Œ€ํ•ด์„œ ํฌ์ŠคํŒ…ํ•ด๋ด์•ผ๊ฒ ๋‹ค.

'CS study/๊ธฐํƒ€' Related Articles +

๋ฐ์ดํ„ฐ์˜ ์ข…๋ฅ˜

๋ฐ์ดํ„ฐ๋Š” ํฌ๊ฒŒ ๋ฒ”์ฃผํ˜•, ์ˆ˜์น˜ํ˜• ๋‘ ๊ฐ€์ง€ ๋ถ„๋ฅ˜๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค.

 

๋ฒ”์ฃผํ˜• ๋ฐ์ดํ„ฐ๋Š” ๋ฒ”์ฃผ/์นดํ…Œ๊ณ ๋ฆฌ๋ฅผ ๊ตฌ๋ถ„ํ•˜๋Š” ๊ฐ๊ฐ์˜ ์ด๋ฆ„์„ ๊ฐ–๋Š” ๋ฐ์ดํ„ฐ ์ข…๋ฅ˜๋‹ค.

ex) ์„ฑ๋ณ„ - ์—ฌ์„ฑ, ๋‚จ์„ฑ / ํ•™๋ ฅ - ์ดˆ์กธ, ์ค‘์กธ, ๋Œ€์กธ, ๋Œ€ํ•™์›์กธ / ์ถœ์‹  ํ•™๊ต - ๊ณ ๋ ค๋Œ€ํ•™๊ต, ์—ฐ์„ธ๋Œ€ํ•™๊ต, ...

๋ฐ˜๋ฉด ์ˆ˜์น˜ํ˜• ๋ฐ์ดํ„ฐ๋Š” ๋ง๊ทธ๋Œ€๋กœ ์ˆซ์ž๋กœ ํ‘œ์‹œ๋˜๋Š” ์ž๋ฃŒ๋“ค์ด๋‹ค.

ex) ๋‚˜์ด - 1์‚ด, 2์‚ด, ... / ํ‚ค - 160cm, 161cm, ... / ๋ชธ๋ฌด๊ฒŒ - 50kg, 51kg, ...

 

๋ฒ”์ฃผํ˜• ๋ฐ์ดํ„ฐ(์งˆ์  ์ž๋ฃŒ)

๋ฒ”์ฃผํ˜• ๋ฐ์ดํ„ฐ๋Š” ๋˜ ์ˆœ์œ„ํ˜•, ๋ช…๋ชฉํ˜•์ด๋ผ๋Š” ๋‘ ๊ฐ€์ง€ ํ•˜์œ„ ๋ถ„๋ฅ˜๋กœ ๋‹ค์‹œ ๋‚˜๋ˆ„์–ด์ง„๋‹ค.

 

์ˆœ์œ„ํ˜• ๋ฐ์ดํ„ฐ๋Š” ๊ฐ ๋ฐ์ดํ„ฐ๋ณ„๋กœ ์ˆœ์œ„๊ฐ€ ๋‚˜๋ˆ„์–ด์ ธ ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋“ค์ด๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ๋งŒ์กฑ๋„ ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ๊ฐํ•ด๋ณด๋ฉด, 5์ ๊ณผ 1์ ์€ ๋™๋“ฑํ•œ ์ž๊ฒฉ์„ ๊ฐ–๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์•„๋‹ˆ๋‹ค. ๋ณดํ†ต 5์ ์ด 1์ ๋ณด๋‹ค ๋” ๋†’์€ ์ˆœ์œ„๋ฅผ ๊ฐ€์ง€๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๋”ฐ๋ผ์„œ ๋งŒ์กฑ๋„ ๋ฐ์ดํ„ฐ๋Š” ์ˆœ์œ„ํ˜• ๋ฐ์ดํ„ฐ์ด๋‹ค.

๋ช…๋ชฉํ˜• ๋ฐ์ดํ„ฐ๋Š” ๋ฐ˜๋Œ€๋กœ ๊ฐ ๋ฐ์ดํ„ฐ๋ณ„ ์ˆœ์œ„๊ฐ€ ์—†๋Š” ๋ฐ์ดํ„ฐ์ด๋‹ค.

์„ฑ๋ณ„ ๋ฐ์ดํ„ฐ๋Š” ์—ฌ์„ฑ๊ณผ ๋‚จ์„ฑ์œผ๋กœ ์ด๋ฃจ์–ด์ง€๋Š”๋ฐ ๋‘˜ ์‚ฌ์ด์˜ ์ˆœ์œ„๋ฅผ ๋งค๊ธธ ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ๋ช…๋ชฉํ˜• ๋ฐ์ดํ„ฐ์ด๋‹ค.

 

์ˆ˜์น˜ํ˜• ๋ฐ์ดํ„ฐ(์–‘์  ์ž๋ฃŒ)

์ˆ˜์น˜ํ˜• ๋ฐ์ดํ„ฐ ์—ญ์‹œ ์ด์‚ฐํ˜•, ์—ฐ์†ํ˜•์ด๋ผ๋Š” ๋‘ ํ•˜์œ„ ๋ถ„๋ฅ˜๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค.

 

์ด์‚ฐํ˜• ๋ฐ์ดํ„ฐ๋Š” ๋ฐ์ดํ„ฐ์™€ ๋ฐ์ดํ„ฐ ์‚ฌ์ด์— ๋Š์–ด์ง์ด ์žˆ๋‹ค.

๋ฌผ๊ฑด์˜ ๊ฐœ์ˆ˜์™€ ๊ฐ™์€ ์˜ˆ์‹œ๋ฅผ ๋“ค ์ˆ˜ ์žˆ๋‹ค. 1๊ฐœ์™€ 2๊ฐœ ์‚ฌ์ด์ธ ๊ฐœ์ˆ˜๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ๋ฌผ๊ฑด์˜ ๊ฐœ์ˆ˜๋Š” ์ด์‚ฐํ˜• ๋ฐ์ดํ„ฐ์ด๋‹ค.

๋ฐ˜๋ฉด ์—ฐ์†ํ˜• ๋ฐ์ดํ„ฐ๋Š” ๋ฐ์ดํ„ฐ์™€ ๋ฐ์ดํ„ฐ ์‚ฌ์ด์— ๋Š์–ด์ง์ด ์—†๋‹ค.

ํ‚ค๋Š” 160cm์™€ 161cm ์‚ฌ์ด์— ๋ฌด์ˆ˜ํžˆ ๋งŽ์€ ๊ฐ’์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ์—ฐ์†์ ์ด๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋”ฐ๋ผ์„œ ์—ฐ์†ํ˜• ๋ฐ์ดํ„ฐ์— ํ•ด๋‹นํ•œ๋‹ค.

 

๋ฒ”์ฃผํ˜• ๋ฐ์ดํ„ฐ ์‹œ๊ฐํ™”

๋ฒ”์ฃผํ˜• ๋ฐ์ดํ„ฐ๋ฅผ ์‹œ๊ฐํ™”ํ•˜๊ธฐ ์œ„ํ•ด์„œ seaborn, matplotlib์„ ์ด์šฉํ•œ๋‹ค.

import seaborn as sns
import matplotlib.pyplot as plt

data.csv
0.00MB

์ƒ๋‹จ์˜ ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜์˜€๋‹ค.

 

1) ๋ฒ”์ฃผํ˜• ๋ณ€์ˆ˜ 1๊ฐœ

๋ฒ”์ฃผํ˜• ๋ณ€์ˆ˜๋ฅผ ์‹œ๊ฐํ™”ํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋ง‰๋Œ€๊ทธ๋ž˜ํ”„๋‚˜ ์›๊ทธ๋ž˜ํ”„๋ฅผ ๊ทธ๋ฆด ์ˆ˜ ์žˆ๋‹ค.

๋ง‰๋Œ€๊ทธ๋ž˜ํ”„์˜ ๊ฒฝ์šฐ pandas์˜ ๊ธฐ๋Šฅ ์ค‘ ํ•˜๋‚˜์ธ plot.bar()๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

image = df['grade'].value_counts().plot.bar()
grade ๋ณ€์ˆ˜๋Š” 1, 2, 3, 4, 5๋“ฑ๊ธ‰ ์ค‘ ํ•˜๋‚˜์˜ ๊ฐ’์„ ๊ฐ–๋Š”๋‹ค. ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ทธ๋ž˜ํ”„๊ฐ€ ๋„์ถœ๋œ๋‹ค.

๋ง‰๋Œ€๊ทธ๋ž˜ํ”„๋ฅผ ๊ทธ๋ฆฌ๋Š” ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์—๋Š” seaborn์˜ ์นด์šดํŠธ๋„ํ‘œ sns.countplot()์ด ์žˆ๋‹ค.

sns.countplot(x = 'grade', data = df)

์›๊ทธ๋ž˜ํ”„๋Š” plt.pie()๋ฅผ ์ด์šฉํ•œ๋‹ค.

plt.pie(x = df['grade'].value_counts(), labels = [1, 2, 3, 4, 5], autopct='%.1f%%')

 

2) ๋ฒ”์ฃผํ˜• ๋ณ€์ˆ˜ + ์ˆ˜์น˜ํ˜• ๋ณ€์ˆ˜ ์‹œ๊ฐํ™”

โ‘  sns.lineplot(): ๋ช…๋ชฉํ˜• + ์ˆ˜์น˜ํ˜•(์—ฐ์†ํ˜• + ์ด์‚ฐํ˜•)

โ‘ก sns.scatterplot(): ๋ช…๋ชฉํ˜• + ์ˆ˜์น˜ํ˜•(์—ฐ์†ํ˜• + ์—ฐ์†ํ˜•)

โ‘ข sns.barplot(): ๋ช…๋ชฉํ˜• + ์—ฐ์†ํ˜•

โ‘ฃ sns.pointplot(): ๋ช…๋ชฉํ˜• + ์—ฐ์†ํ˜•

โ‘ค sns.boxplot(): ๋ช…๋ชฉํ˜• + ์—ฐ์†ํ˜• 

โ‘ฅ sns.violinplot(): ๋ช…๋ชฉํ˜• + ์—ฐ์†ํ˜•

๊ต‰์žฅํžˆ ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ์‹œ๊ฐํ™”๊ฐ€ ๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ ๋•Œ์— ๋”ฐ๋ผ ์ ์ ˆํ•˜๊ฒŒ ์‹œ๊ฐํ™” ๋ฐฉ๋ฒ•์„ ๊ณ ๋ฅด๋ฉด ๋œ๋‹ค.

์ด์ค‘์—์„œ scatterplot์„ ํ•œ ๋ฒˆ ๊ทธ๋ ค๋ณด์ž.

sns.scatterplot(x = 'weight', y = 'height', data = df, hue = 'grade')

weight์™€ height ์‚ฌ์ด์˜ scatterplot์„ ๊ทธ๋ ธ์ง€๋งŒ, hue๋ฅผ ํ†ตํ•ด grade๋ณ„๋กœ ๋‹ค๋ฅด๊ฒŒ ํ‘œ์‹œํ•˜์˜€๋‹ค.

grade๋Š” ๋ฒ”์ฃผํ˜• ๋ณ€์ˆ˜์ด๊ณ  ๋‚˜๋จธ์ง€๋Š” ์ˆ˜์น˜ํ˜•์ด๋ฏ€๋กœ ๋ฒ”์ฃผํ˜•, ์ˆ˜์น˜ํ˜• ์‚ฌ์ด ๋ฐ์ดํ„ฐ๋ฅผ ์‹œ๊ฐํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ๋  ์ˆ˜ ์žˆ๋‹ค.

 

์ˆ˜์น˜ํ˜• ๋ฐ์ดํ„ฐ ์‹œ๊ฐํ™”

1) ์ˆ˜์น˜ํ˜• ๋ณ€์ˆ˜ 1๊ฐœ

ํžˆ์Šคํ† ๊ทธ๋žจ์„ ๊ทธ๋ ค์„œ ์ˆ˜์น˜ํ˜• ๋ณ€์ˆ˜๋ฅผ ์‹œ๊ฐํ™”ํ•ด๋ณด์ž. plt.hist()๋ฅผ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

plt.hist(df['height'])

๊ตฌ๊ฐ„์˜ ๊ฐœ์ˆ˜๋Š” hist์˜ ์ธ์ž์ธ bins์— ๊ฐ’์„ ๋„ฃ์–ด์ฃผ๋ฉด ๋œ๋‹ค.

ํžˆ์Šคํ† ๊ทธ๋žจ์— ํ™•๋ฅ ๋ฐ€๋„ํ•จ์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ๊ทธ๋ฆฌ๋Š” ๋ฐฉ๋ฒ•๋„ ์žˆ๋‹ค. sns.displot()๋ฅผ ์ด์šฉํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

sns.distplot(df['weight'])

sns.boxplot()์„ ํ†ตํ•ด ๋ฐ•์Šคํ”Œ๋กฏ์„ ๊ทธ๋ฆด ์ˆ˜ ์žˆ๋‹ค. min, max, Q1, Q2, Q3, outlier๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

plt.figure(figsize = (6, 8))
sns.boxplot(y = 'weight', data = df)
plt.show()

 

2) ์ˆ˜์น˜ํ˜• ๋ณ€์ˆ˜ 2๊ฐœ

โ‘  sns.lineplot(): ์—ฐ์†ํ˜• + ์ด์‚ฐํ˜•

โ‘ก sns.scatterplot(): ์—ฐ์†ํ˜• + ์—ฐ์†ํ˜•

โ‘ข sns.regplot(): ์—ฐ์†ํ˜•+ ์—ฐ์†ํ˜•

๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ์‹œ๊ฐํ™”๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค. ์–ด๋–ค ๋ฐฉ๋ฒ•์œผ๋กœ ์‹œ๊ฐํ™”๋ฅผ ํ–ˆ์„ ๋•Œ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ฐ€์žฅ ์ž˜ ๋“œ๋Ÿฌ๋‚˜๋Š”์ง€๋Š” ์—ฐ์Šตํ•ด๋ณผ ํ•„์š”๊ฐ€ ์žˆ๋Š” ๊ฒƒ ๊ฐ™๋‹ค.

 

๋”๋ณด๊ธฐ
'CS study/๊ธฐํƒ€' Related Articles +

์„ ํ˜• ํšŒ๊ท€ (Linear Regression) ๋ž€ ๋ฌด์—‡์ธ๊ฐ€?

ํšŒ๊ท€๋ž€ x๊ฐ’์— ๋Œ€์‘ํ•˜๋Š” y๊ฐ’๊ณผ ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ๊ฐ’(y hat)๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ์ฐพ๋Š” ๊ณผ์ •์ด๋‹ค. ์—ฌ๊ธฐ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ํ•จ์ˆ˜๊ฐ€ ์„ ํ˜• ํ•จ์ˆ˜๋ผ๋ฉด ์„ ํ˜•ํšŒ๊ท€๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

 

์„ ํ˜•ํšŒ๊ท€๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋Š” ๊ทธ ๋‹จ์ˆœํ•จ์— ์žˆ๋‹ค. ๊ฐ ํ”ผ์ณ์˜ ๊ณ„์ˆ˜์™€ ๋ชฉํ‘œํ•˜๋Š” ๋ณ€์ˆ˜ ์‚ฌ์ด์˜ ๊ด€๊ณ„๋ฅผ ๋ณด๋‹ค ๋” ์ง๊ด€์ ์œผ๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

์„ ํ˜• ํšŒ๊ท€์˜ ์ข…๋ฅ˜

- ๋‹จ์ˆœ ์„ ํ˜• ํšŒ๊ท€

ํ”ผ์ณ(x)๊ฐ€ ํ•˜๋‚˜๋ฟ์ธ ๋ชจ๋ธ์ด๊ณ  ๋ชฉํ‘œ ๋ณ€์ˆ˜์™€ ํ”ผ์ณ๊ฐ€ ๊ฐ™์€ ์ขŒํ‘œํ‰๋ฉด์— ๋‚˜ํƒ€๋‚˜๋Š” ์ง์„  ํ˜•ํƒœ์ด๋‹ค. ๋‹จ์ˆœ ์„ ํ˜• ํšŒ๊ท€๋Š” ์„ ํ˜• ์‚ฌ์ƒ์— ๋ถ€ํ•ฉํ•œ๋‹ค. 

 

- ๋‹ค์ค‘ ์„ ํ˜• ํšŒ๊ท€

ํ”ผ์ณ(x)๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ์ธ ๋ชจ๋ธ๋กœ ๋‹ค์ฐจ์› ๊ณต๊ฐ„์—์„œ ์กด์žฌํ•˜๋Š” ์ง์„ ์˜ ํ˜•ํƒœ๋กœ ํ‘œํ˜„๋œ๋‹ค. ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์„ ํ˜• ์‚ฌ์ƒ์— ๋ถ€ํ•ฉํ•œ๋‹ค.

 

- ๋‹คํ•ญ ํšŒ๊ท€ (Polynomial)

ํ”ผ์ณ๋Š” 1๊ฐœ๋ฟ์ด์ง€๋งŒ ๋‹คํ•ญ์‹์˜ ํ˜•ํƒœ๋กœ ๋‚˜ํƒ€๋‚˜๋ฏ€๋กœ ๊ณก์„ ์˜ ํ˜•ํƒœ๋กœ ํ‘œํ˜„๋œ๋‹ค. ๋‹คํ•ญ ํšŒ๊ท€์˜ ๊ฒฝ์šฐ ์ง€์ˆ˜๊ฐ€ ๋Š˜์–ด๋‚  ๋•Œ๋งˆ๋‹ค ๊ธ‰๊ฒฉํžˆ ๋ณต์žกํ•ด์ง€๋ฏ€๋กœ ํšŒ๊ท€ ๋ชจ๋ธ์—์„œ ์˜ค๋ฒ„ํ”ผํŒ…(overfitting, ๊ณผ์ ํ•ฉ)์ด ๋ฐœ์ƒํ•  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์•„์ง„๋‹ค. 

 

๋น„์šฉํ•จ์ˆ˜

๋จธ์‹ ๋Ÿฌ๋‹์—์„œ๋Š” ์ฃผ์–ด์ง„ ๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ๋ธ์— ํˆฌ์ž…ํ•จ์œผ๋กœ์จ ๋ชจ๋ธ์„ ์ ํ•ฉํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ํ•™์Šต๊ณผ์ •์„ ๊ฑฐ์นœ๋‹ค. ์ด๋•Œ ์ œ๋Œ€๋กœ ์ ํ•ฉ์ด ๋˜๋ ค๋ฉด ๋ชจ๋ธ์˜ ์˜ˆ์ธก๊ฐ’๊ณผ ์‹ค์ œ ๊ฐ’์„ ์ค„์—ฌ์•ผ ํ•œ๋‹ค. ๋ชจ๋ธ์˜ ์˜ˆ์ธก๊ฐ’๊ณผ ์‹ค์ œ ๊ฐ’์˜ ์ฐจ์ด๋ฅผ ๋น„๊ตํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ๋น„์šฉ(cost) ํ•จ์ˆ˜๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. ๋น„์šฉํ•จ์ˆ˜๋Š” ๋ชจ๋ธ์˜ ํŠน์„ฑ์— ๋งž๊ฒŒ ์˜ค์ฐจ๋ฅผ ์ธก์ •ํ•˜๋Š” ์—ญํ• ์„ ํ•˜๋ฉฐ, ๋ณดํ†ต ๋น„์šฉํ•จ์ˆ˜ ๊ฐ’์ด ์ž‘์„์ˆ˜๋ก ์˜ค์ฐจ๊ฐ€ ์ž‘์œผ๋ฉฐ ๋ชจ๋ธ์ด ์ž˜ ํ•™์Šต๋˜์—ˆ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.

๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋น„์šฉํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๋‹จ์ˆœ ์„ ํ˜• ํšŒ๊ท€ ๊ตฌํ˜„

sklearn (์‹ธ์ดํ‚ท๋Ÿฐ) ์„ ์ด์šฉํ•œ๋‹ค. ๋ชจ๋ธ ์ฝ”๋“œ๋ฅผ ๊ตฌํ˜„ํ•  ๋•Œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•˜์˜€๋‹ค.

from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import PolynomialFeatures
from sklearn.metrics import r2_score, mean_squared_error

ํ•™์Šต, ๊ฒ€์ฆ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„๋ฆฌํ•˜์—ฌ์•ผ ํ•˜๋ฏ€๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•œ๋‹ค.

X_train, X_test, y_train, y_test = train_test_split(x, y, test_size = 0.2, random_state = 156)

x, y๋Š” ๋ฐ์ดํ„ฐ์—์„œ ๋ถˆ๋Ÿฌ์˜จ ๊ฐ๊ฐ์˜ x, y ๊ฐ’๋“ค์ด๋‹ค.

test_size๋Š” ๊ฒ€์ฆ ๋ฐ์ดํ„ฐ๋กœ ๋ถ„๋ฆฌํ•  ๋ฐ์ดํ„ฐ์˜ ๋น„์œจ์„ ์ง€์ •ํ•ด์ค€๋‹ค. random_state๋Š” ์•„๋ฌด ์ˆซ์ž๋‚˜ ์ ๋Š”๋‹ค.

๋ฐ์ดํ„ฐ์…‹๋“ค๋กœ ํ•™์Šต์„ ํ•˜๋ ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ณผ์ •์„ ๊ฑฐ์นœ๋‹ค.

lr = LinearRegression(fit_intercept = True)
lr.fit(X_train, y_train)

fit_intercept๋ฅผ True๋กœ ์„ค์ •ํ•˜์—ฌ ๋‹จ์ˆœ ์„ ํ˜• ํšŒ๊ท€ ๋ชจ๋ธ์— b0๊ฐ’๋„ ํฌํ•จ์‹œํ‚จ๋‹ค.

์ดํ›„ lr.fit์„ ํ†ตํ•ด ํ•™์Šต์‹œํ‚จ๋‹ค.

lr.coef_ # b๊ฐ’๋“ค์˜ array
lr.coef_[0] # b1 ๊ฐ’์— ์ ‘๊ทผ
lr.intercept_ # b0 ๊ฐ’ (์ ˆํŽธ)์— ์ ‘๊ทผ

๋ชจ๋ธ์—์„œ coef_๋ฅผ ์ด์šฉํ•˜๋ฉด b๊ฐ’๋“ค์˜ array๋ฅผ ๊ตฌํ•  ์ˆ˜ ์žˆ๊ณ , index๋ฅผ ์ง€์ •ํ•˜์—ฌ ๊ฐ๊ฐ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, intercept_๋Š” ์ ˆํŽธ, ์ฆ‰ b0 ๊ฐ’์„ ์•Œ๋ ค์ฃผ๋Š” ๋ฉ”์„œ๋“œ๋‹ค.

y_train_pred = lr.predict(X_train)
y_test_pred = lr.predict(X_test)

train_r2 = r2_score(y_train, y_train_pred)
test_r2 = r2_score(y_test, y_test_pred)

lr.score(X_test, y_test)

predict ๋ฉ”์„œ๋“œ๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•œ๋‹ค.

r2_score์•ˆ์˜ ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” ์‹ค์ œ y๊ฐ’๊ณผ ๋ชจ๋ธ์ด ๋„์ถœํ•œ y hat ๊ฐ’์„ ๋ฐ›๋Š”๋‹ค. r2_score๊ฐ€ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฐ’์ด ํด์ˆ˜๋ก ์ž˜ ์˜ˆ์ธกํ•˜์˜€๋‹ค๋Š” ๋œป์ด๋‹ค.

lr.score์™€ ๊ฐ™์€ ๋ฐฉ๋ฒ•์œผ๋กœ๋„ test ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๋‹คํ•ญ ํšŒ๊ท€ ๊ตฌํ˜„ - 2nd order Polynomial Regression

quad = PolynomialFeatures(degree = 2)
X_quad = quad.fit_transform(x)

quadratic regression์€ 2์ฐจ ๋‹คํ•ญ ํšŒ๊ท€๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

PolynomialFeatures๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ degree๋กœ ๋ฐ›๋Š”๋ฐ, ์—ฌ๊ธฐ์— ๋„ฃ์–ด์ฃผ๋Š” ์ˆซ์ž์— ๋”ฐ๋ผ์„œ ๋‹คํ•ญํšŒ๊ท€์˜ ์ฐจ์ˆ˜๊ฐ€ ๊ฒฐ์ •๋œ๋‹ค.

X_train, X_test, y_train, y_test = train_test_split(X_quad, y, random_state = 156)

plr = LinearRegression()
plr.fit(X_train, y_train)

y_train_pred = plr.predict(X_train)
y_test_pred = plr.predict(X_test)

plr.score(X_test, y_test)

train_test_split์„ ํ†ตํ•ด ํ•™์Šต, ๊ฒ€์ฆ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„๋ฆฌํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ๋ธ์— ํ•™์Šต์‹œํ‚จ๋‹ค. ๋‹ค์Œ์œผ๋กœ ๋ชจ๋ธ์ด ์–ผ๋งˆ๋‚˜ ์ ํ•ฉํ•œ์ง€ ํ‰๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค.

๋งŒ์•ฝ 3์ฐจ, 4์ฐจ ๋“ฑ์˜ ๋‹คํ•ญํšŒ๊ท€๋ฅผ ํ•ด๋ณด๊ณ  ์‹ถ๋‹ค๋ฉด ์œ„์—์„œ degree๊ฐ’๋งŒ ๋ณ€๊ฒฝ์‹œํ‚ค๊ณ  ๋‚˜๋จธ์ง€ ๊ณผ์ •์€ ๋˜‘๊ฐ™์ด ํ•˜๋ฉด ๋œ๋‹ค.

'CS study/๋จธ์‹ ๋Ÿฌ๋‹' Related Articles +
1 2 3