๋Ÿฌ๋‹์Šคํ‘ผ์ฆˆ ์ˆ˜์—… ์ •๋ฆฌ 

 

 


 ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ & ๋ฐ์ดํ„ฐ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ 

- ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ 

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

 

- ๋ฐ์ดํ„ฐ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ 

data = pd.read_csv('./data/boston.csv')
data.head()

 

- ๋ฐ์ดํ„ฐ ์‚ดํŽด๋ณด๊ธฐ 

data.info()

506๊ฐœ์˜ row๊ฐ€ ์กด์žฌํ•˜๊ณ , ๊ฒฐ์ธก๊ฐ’์€ ์—†๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. 

data.columns

์ด 14๊ฐœ์˜ ์ปฌ๋Ÿผ์ด ์žˆ๋‹ค. ๊ฐ ์ปฌ๋Ÿผ์˜ ์˜๋ฏธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. 

  • crim: ๋ฒ”์ฃ„์œจ
  • zn: 25,000 ํ‰๋ฐฉํ”ผํŠธ๋ฅผ ์ดˆ๊ณผ ๊ฑฐ์ฃผ์ง€์—ญ ๋น„์œจ
  • indus: ๋น„์†Œ๋งค์ƒ์—…์ง€์—ญ ๋ฉด์  ๋น„์œจ
  • chas: ์ฐฐ์Šค๊ฐ•์˜ ๊ฒฝ๊ณ„์— ์œ„์น˜ํ•œ ๊ฒฝ์šฐ๋Š” 1, ์•„๋‹ˆ๋ฉด 0
  • nox: ์ผ์‚ฐํ™”์งˆ์†Œ ๋†๋„
  • rm: ์ฃผํƒ๋‹น ๋ฐฉ ์ˆ˜
  • age: 1940๋…„ ์ด์ „์— ๊ฑด์ถ•๋œ ์ฃผํƒ์˜ ๋น„์œจ
  • dis: ์ง์—…์„ผํ„ฐ์˜ ๊ฑฐ๋ฆฌ
  • rad: ๋ฐฉ์‚ฌํ˜• ๊ณ ์†๋„๋กœ๊นŒ์ง€์˜ ๊ฑฐ๋ฆฌ
  • tax: ์žฌ์‚ฐ์„ธ์œจ
  • ptratio: ํ•™์ƒ/๊ต์‚ฌ ๋น„์œจ
  • b: ์ธ๊ตฌ ์ค‘ ํ‘์ธ ๋น„์œจ
  • lstat: ์ธ๊ตฌ ์ค‘ ํ•˜์œ„ ๊ณ„์ธต ๋น„์œจ
  • medv : ๋ณด์Šคํ„ด 506๊ฐœ ํƒ€์šด์˜ 1978๋…„ ์ฃผํƒ ๊ฐ€๊ฒฉ ์ค‘์•™๊ฐ’ (๋‹จ์œ„ 1,000 ๋‹ฌ๋Ÿฌ)

 Feature Selection : ์ƒ๊ด€๊ณ„์ˆ˜์™€ ๊ณต๋ถ„์‚ฐ 

- ๋ฒ”์ฃผํ˜• ๋ณ€์ˆ˜ ์ œ๊ฑฐ 

del data['chas']

์ƒ๊ด€๊ณ„์ˆ˜์™€ ๊ณต๋ถ„์‚ฐ์€ ์—ฐ์†ํ˜• ์ž๋ฃŒ๋ฅผ ๋ถ„์„ํ•˜๋ฏ€๋กœ ๋ฒ”์ฃผํ˜• ๋ณ€์ˆ˜๋ฅผ ์ œ๊ฑฐํ•œ๋‹ค. ์‹ค์ œ ๋ณ€์ˆ˜๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ๊ฒƒ์€ ์‹ ์ค‘ํ•˜๊ฒŒ ํ–‰ํ•ด์•ผ ํ•˜์ง€๋งŒ , ํ•™์Šต์„ ์œ„ํ•˜์—ฌ ์ œ๊ฑฐํ•œ๋‹ค.

 

๊ฐ€์„ค ์„ธ์šฐ๊ธฐ 

1. ๋ฒ”์ฃ„์œจ์ด ๋†’์€ ๊ณณ์˜ ์ง‘๊ฐ’์€ ๋‚ฎ์„๊นŒ? 

2. ๋ฐฉ์˜ ๊ฐœ์ˆ˜๊ฐ€ ๋งŽ์€ ๊ณณ์˜ ์ง‘๊ฐ’์€ ๋†’์„๊นŒ? 

3. ์ผ์‚ฐํ™”์งˆ์†Œ ๋†๋„๊ฐ€ ๋†’์„์ˆ˜๋ก ์ง‘๊ฐ’์€ ๋‚ฎ์„๊นŒ? 

4. ์žฌ์‚ฐ์„ธ์œจ์ด ๋†’์„์ˆ˜๋ก ์ง‘๊ฐ’์„ ๋†’์„๊นŒ?

 

1. ๋ฒ”์ฃ„์œจ์ด ๋†’์€ ๊ณณ์˜ ์ง‘๊ฐ’์€ ๋‚ฎ์„๊นŒ? 

sns.jointplot(data=data, x='crim', y='medv', kind='reg')

๊ทน๋‹จ์ ์ธ ์Œ์˜ ๊ด€๊ณ„๋Š” ์•„๋‹ˆ์ง€๋งŒ , ๋ฒ”์ฃ„์œจ์ด ๋†’์•„์งˆ ์ˆ˜๋ก ์ง‘๊ฐ’์ด ๋‚ฎ์•„์ง€๋Š” ์ถ”์„ธ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. 

 

 

- ๊ณต๋ถ„์‚ฐ

data['crim'].cov(data['medv'])

์Œ์˜ ๊ด€๊ณ„๋ฅผ ๊ฐ–๊ณ  ์žˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. 

 

 

- ์ƒ๊ด€๊ณ„์ˆ˜ 

data['crim'].corr(data['medv'])    # ํ”ผ์–ด์Šจ์ƒ๊ด€๊ณ„์ˆ˜ 0.3 ~ 0.6 ๊ฐ•ํ•œ ์ƒ๊ด€๊ณ„์ˆ˜


r์ด -1.0๊ณผ -0.7 ์‚ฌ์ด์ด๋ฉด, ๊ฐ•ํ•œ ์Œ์  ์„ ํ˜•๊ด€๊ณ„,

r์ด -0.7๊ณผ -0.3 ์‚ฌ์ด์ด๋ฉด, ๋šœ๋ ทํ•œ ์Œ์  ์„ ํ˜•๊ด€๊ณ„,

r์ด -0.3๊ณผ -0.1 ์‚ฌ์ด์ด๋ฉด, ์•ฝํ•œ ์Œ์  ์„ ํ˜•๊ด€๊ณ„,

r์ด -0.1๊ณผ +0.1 ์‚ฌ์ด์ด๋ฉด, ๊ฑฐ์˜ ๋ฌด์‹œ๋  ์ˆ˜ ์žˆ๋Š” ์„ ํ˜•๊ด€๊ณ„,

r์ด +0.1๊ณผ +0.3 ์‚ฌ์ด์ด๋ฉด, ์•ฝํ•œ ์–‘์  ์„ ํ˜•๊ด€๊ณ„,

r์ด +0.3๊ณผ +0.7 ์‚ฌ์ด์ด๋ฉด, ๋šœ๋ ทํ•œ ์–‘์  ์„ ํ˜•๊ด€๊ณ„,

r์ด +0.7๊ณผ +1.0 ์‚ฌ์ด์ด๋ฉด, ๊ฐ•ํ•œ ์–‘์  ์„ ํ˜•๊ด€๊ณ„

 

์ถœ์ฒ˜ - https://ko.wikipedia.org/wiki/%EC%83%81%EA%B4%80_%EB%B6%84%EC%84%9D


์œ„์™€ ๊ฐ™์€ ํ”ผ์–ด์Šจ ์ƒ๊ด€๊ณ„์ˆ˜ ํ•ด์„์„ ๋ณด์•˜์„ ๋•Œ ๋ฒ”์ฃ„์œจ๊ณผ ์ง‘๊ฐ’์€ ๋šœ๋ ทํ•œ ์Œ์  ์„ ํ˜•๊ด€๊ณ„๋ผ๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. 

 

[ ๊ฐ€์„ค1 : True ] 

 

 

2. ๋ฐฉ์˜ ๊ฐœ์ˆ˜๊ฐ€ ๋งŽ์€ ๊ณณ์˜ ์ง‘๊ฐ’์€ ๋†’์„๊นŒ? 

sns.jointplot(data=data, x='rm', y='medv', kind='reg')

๊ทธ๋ž˜ํ”„๋ฅผ ๋ณด๋ฉด, ๋ฐฉ์˜ ๊ฐœ์ˆ˜๊ฐ€ ๋งŽ์„์ˆ˜๋ก ์ง‘๊ฐ’์ด ๋†’์•„์ง€๋Š” ๊ฒฝํ–ฅ์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. 

 

- ๊ณต๋ถ„์‚ฐ

data['rm'].cov(data['medv'])

๊ณต๋ถ„์‚ฐ์„ ๋ณด์•˜์„ ๋•Œ ์–‘์˜ ๊ด€๊ณ„๋ฅผ ๊ฐ–๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. 

 

 

- ์ƒ๊ด€๊ณ„์ˆ˜ 

data['rm'].corr(data['medv'])

์ƒ๊ด€๊ณ„์ˆ˜๋ฅผ ๋ณด๋‹ˆ ๊ฐ•ํ•œ ์–‘์  ์„ ํ˜•๊ด€๊ณ„์— ๊ฐ€๊นŒ์šด ๋šœ๋ ทํ•œ ์–‘์  ์„ ํ˜•๊ด€๊ณ„๋ผ๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ์—ฌ๊ธฐ์„œ ๊ณต๋ถ„์‚ฐ์˜ ํ—ˆ์ ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ๊ฐ€์„ค2์˜ ์ƒ๊ด€๊ณ„์ˆ˜๋Š” ๊ฐ€์„ค1์—์„œ ์ƒ๊ด€๊ณ„์ˆ˜๋ณด๋‹ค ๋” ๋šœ๋ ทํ•œ ๊ด€๊ณ„์ด์ง€๋งŒ, ๊ณต๋ถ„์‚ฐ์€ ๊ฐ€์„ค2๊ฐ€ ๋” ๋†’๋‹ค. 

 

[ ๊ฐ€์„ค2 : True ] 

 

 

3. ์ผ์‚ฐํ™”์งˆ์†Œ ๋†๋„๊ฐ€ ๋†’์„์ˆ˜๋ก ์ง‘๊ฐ’์€ ๋‚ฎ์„๊นŒ?

sns.jointplot(data=data, x='nox', y='medv', kind='reg')

data['nox'].corr(data['medv'])

-0.4273207723732824

๋šœ๋ ทํ•œ ์Œ์  ์ƒ๊ด€๊ด€๊ณ„์ธ ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ์ผ์‚ฐํ™”์งˆ์†Œ ๋†๋„๊ฐ€ ๋†’์„ ์ˆ˜๋ก ์ง‘๊ฐ’์€ ๋‚ฎ์•„์ง€๋Š” ๊ฒฝํ–ฅ์„ ๋ณด์ธ๋‹ค.

 

[ ๊ฐ€์„ค3 : True ] 

 

 

4. ์žฌ์‚ฐ์„ธ์œจ์ด ๋†’์„์ˆ˜๋ก ์ง‘๊ฐ’์„ ๋†’์„๊นŒ?

sns.jointplot(data=data, x='tax', y='medv', kind='reg')

data['tax'].corr(data['medv'])

-0.46853593356776696

๋šœ๋ ทํ•œ ์Œ์ ์ƒ๊ด€๊ด€๊ณ„๋ฅผ ๊ฐ–๊ณ  ์žˆ๊ณ , ์žฌ์‚ฐ์„ธ์œจ์ด ๋†’์„์ˆ˜๋ก ์ง‘๊ฐ’์ด ๋‚ฎ์•„์ง€๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. 

 

[ ๊ฐ€์„ค4 : False ] 

 

 

- ๋ชจ๋“ ๋ฐ์ดํ„ฐ์˜ ์ƒ๊ด€๊ณ„์ˆ˜ ์•Œ๊ธฐ - heatmap 

plt.figure(figsize=(10, 7))
sns.heatmap(data.corr(), cmap='RdBu_r', annot=True, fmt='0.1f')

lstat์™€ rm ์˜ ์ง‘๊ฐ’๊ณผ์˜ ์ƒ๊ด€๊ณ„์ˆ˜๊ฐ€ ๊ฐ€์žฅ ๋†’์€ ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.  ์ธ๊ตฌ ์ค‘ ํ•˜์œ„ ๊ณ„์ธต ๋น„์œจ(lstat)์™€๋Š” ์Œ์˜ ์ƒ๊ด€๊ด€๊ณ„, ๋ฐฉ์˜ ๊ฐœ์ˆ˜(rm) ๊ณผ๋Š” ์–‘์˜ ์ƒ๊ด€๊ด€๊ณ„๋ฅผ ๋ˆ๋‹ค. ๋ฐ˜๋ฉด dis(์ง์—…์„ผํ„ฐ์˜ ๊ฑฐ๋ฆฌ), b(์ธ๊ตฌ ์ค‘ ํ‘์ธ ๋น„์œจ) ์™€ ์ง‘๊ฐ’์€ ๋‚ฎ์€ ์ƒ๊ด€๊ด€๊ณ„๋ฅผ ๋ณด์ธ๋‹ค. 

 

 

 

 

 


 Feature Extraction 

- ์ƒ๊ด€๊ด€๊ณ„ ๋น„๊ตํ•˜์—ฌ ๋ช‡๊ฐœ์˜ ๋ณ€์ˆ˜๋ฅผ ๋ช‡๊ฐœ๋กœ ์ค„์ผ ๊ฒƒ์ธ์ง€ ๊ฒฐ์ • 

corr_bar = []

for column in data.columns:
    print(f"{column}๊ณผ ์ง‘๊ฐ’์˜ ์ƒ๊ด€๊ด€๊ณ„: {data[column].corr(data['medv'])}")
    corr_bar.append(abs(data[column].corr(data['medv'])))

๊ฐ ์ปฌ๋Ÿผ๋ณ„ ์ง‘๊ฐ‘๊ณผ์˜ ์ƒ๊ด€๊ณ„์ˆ˜๋ฅผ ์ถœ๋ ฅํ•ด๋ณด๊ณ , corr_bar ๋ฆฌ์ŠคํŠธ์—๋Š” ์ ˆ๋Œ“๊ฐ’์„ ์ทจํ•˜์—ฌ ์ถ”๊ฐ€ํ•ด์ค€๋‹ค. 

corr_bar

sns.barplot(data.columns, corr_bar)

๋ง‰๋Œ€๊ทธ๋ž˜ํ”„๋ฅผ ๊ทธ๋ ค๋ณด๋‹ˆ dis, b ๊ฐ€ ๋‹ค๋ฅธ ์ปฌ๋Ÿผ๋“ค๋ณด๋‹ค ์ƒ๊ด€๊ณ„์ˆ˜๊ฐ€ ์ž‘์€ ๊ฒƒ์„ ํ•œ๋ˆˆ์— ๋ณผ ์ˆ˜ ์žˆ๋‹ค. 

 

x = data[['dis', 'b']]

data์—์„œ ๋‘ ๋ณ€์ˆ˜๋ฅผ ์„ ํƒํ•˜์—ฌ x์— ์ €์žฅํ•œ๋‹ค. 

x.head()

 

PCA ์‚ฌ์šฉ 

from sklearn.decomposition import PCA

PCA(n_components)

  • n_components : ๋ช‡๊ฐ€์ง€์˜ ๋ณ€์ˆ˜๋ฅผ ๋งŒ๋“ค์ง€ ๊ฐœ์ˆ˜๋ฅผ ์ •ํ•œ๋‹ค.
  • ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฐœ๋…

PCA.fit(x)

  • x์˜ ๋ฐ์ดํ„ฐ๋ฅผ ํ•™์Šต์‹œํ‚ด์œผ๋กœ์จ ์•ž์—์„œ ์ƒ์„ฑํ•œ ๊ฐ์ฒด๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ณต๋ถ€ํ•˜๋Š” ๊ฐœ๋…

PCA.components_

  • ์•ž์„œ ํ•™์Šตํ•œ ๋‚ด์šฉ์„ ๋ฐ”ํƒ•์œผ๋กœ ๋งŒ๋“ค์–ด์ง„ ๋ณ€์ˆ˜์†์— ๋‹ด๊ธด ์ด ์ „ ๋ณ€์ˆ˜์˜ ๋ถ„์‚ฐ์ด ๋‹ด๊ธด ์ •๋„

PCA.explained_variance_ratio_

  • ์ƒˆ๋กœ์šด ๋ณ€์ˆ˜๊ฐ€ ์„ค๋ช…ํ•˜๋Š” ๋ถ„์‚ฐ์˜ ๋น„์œจ

PCA.transform

  • ํ•™์Šตํ•œ ๋‚ด์šฉ์„ ๋ฐ”ํƒ•์œผ๋กœ ๋งŒ๋“ค์–ด์ง„ ํ•™์Šต๊ธฐ๋กœ x์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€ํ™˜

 

- 2๊ฐœ์˜ ๋ณ€์ˆ˜ -> 1๊ฐœ์˜ ๋ณ€์ˆ˜ 

pca = PCA(n_components=1)

n_components ์— ์ƒ์„ฑํ•  ๋ณ€์ˆ˜๋ฅผ ์ž‘์„ฑํ•ด์ค€๋‹ค. 

pca.fit(x)

๋ฐ์ดํ„ฐ๋ฅผ ํ•™์Šตํ‚จ๋‹ค. 

pca.components_

์ƒˆ๋กœ์šด ๋ณ€์ˆ˜์— ๋‹ด๊ธด ๊ฐ ๋ณ€์ˆ˜์˜ ๋ถ„์‚ฐ์„ ํ™•์ธํ•ด ๋ณธ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์˜ค๋ฅธ์ชฝ (b) ์˜ ๋ถ„์‚ฐ์ด ๋„ˆ๋ฌด ํฌ๋‹ค. ์ด๋Š” ์˜ค๋ฅธ์ชฝ ๋ณ€์ˆ˜์˜ ์ •๋ณด๋งŒ ๋งŽ์ด ๋‹ด๊ฒผ๋‹ค๊ณ  ํ•ด์„ํ•  ์ˆ˜ ์žˆ๋‹ค. ( -> ์ •๊ทœํ™”๊ฐ€ ํ•„์š”ํ•œ ์ด์œ  / ๋’ค์—์„œ ํ•™์Šต ) 

pca.explained_variance_ratio_

์ƒˆ๋กœ์šด ๋ณ€์ˆ˜๊ฐ€ ์„ค๋ช…ํ•˜๋Š” ๋ถ„์‚ฐ์˜ ๋น„์œจ์ด๋‹ค. 

data['pc1'] = pca.transform(x)

ํ•™์Šต์‹œํ‚จ pca๋ฅผ ์ด์šฉํ•˜์—ฌ x์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€ํ™˜ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ data์˜ pc1์ด๋ผ๋Š” ์ปฌ๋Ÿผ์— ์ถ”๊ฐ€ํ•œ๋‹ค. 

data

์ถ”๊ฐ€ ์™„๋ฃŒ๋œ ๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„. 

sns.jointplot(data=data, x='pc1', y='medv', kind='reg')

data['pc1'].corr(data['medv'])

์ƒˆ๋กœ์šด ์ปฌ๋Ÿผ๊ณผ ์ง‘๊ฐ’์˜ ์ƒ๊ด€๊ด€๊ณ„๋ฅผ ๋ณด๋ฉด ์ „์— b๋ณ€์ˆ˜์˜ ์ƒ๊ด€๊ณ„์ˆ˜์™€ ๋ณ„ ์ฐจ์ด๊ฐ€ ์—†๋‹ค. ์ •๊ทœํ™”๋ฅผ ์ง„ํ–‰ํ•˜์—ฌ ๋‹ค์‹œ ํ•™์Šตํ•ด ๋ณด์ž. 

 

์ •๊ทœํ™”

from sklearn.preprocessing import StandardScaler

StandardScaler()

  • ์ •๊ทœํ™” ๊ฐ์ฒด ์ƒ์„ฑ

scaler.fit(x)

  • ์ •๊ทœํ™” ๊ฐ์ฒด๋กœ ํ•™์Šต

scaler.transform(x)

  • ํ•™์Šต๋œ ํ•™์Šต๊ธฐ๋กœ ๋ณ€์ˆ˜ x์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€ํ™˜

 

scaler = StandardScaler()

์ •๊ทœํ™” ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. 

scaler.fit(x)
scaler_x = scaler.transform(x)

x๋ฐ์ดํ„ฐ๋ฅผ ํ•™์Šต์‹œํ‚จ ํ›„, ์ •๊ทœํ™” ๋œ x๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€ํ™˜ํ•˜์—ฌ scaler_x ์— ์ €์žฅํ•ด์ค€๋‹ค. 

scaler_x

 

 

- ์ •๊ทœํ™”๋œ ๋ฐ์ดํ„ฐ๋กœ pca ์‹คํ–‰ 

# ๋ณ€์ˆ˜ 1๊ฐœ๋กœ ์„ค์ • 
pca = PCA(n_components=1)
# ๋ฐ์ดํ„ฐ๋ฅผ ํ•™์Šต
pca.fit(scaler_x)
# ์ƒˆ๋กœ์šด ๋ณ€์ˆ˜์— ๋‹ด๊ธด ๊ฐ ๋ณ€์ˆ˜์˜ ๋ถ„์‚ฐ์„ ํ™•์ธ
# ์œ„์™€ ๋‹ฌ๋ผ์ง„ ๋ถ„์‚ฐ์˜ ์ •๋„๋ฅผ ํ™•์ธ
pca.components_

์ •๊ทœํ™”๋œ ๋ฐ์ดํ„ฐ๋กœ pca๋ฅผ ์ง„ํ–‰ํ•˜๋‹ˆ ์ƒˆ๋กœ์šด ๋ณ€์ˆ˜์— ๋‘๊ฐ€์ง€์˜ ๋ณ€์ˆ˜์˜ ๋ถ„์‚ฐ์ด ๋™์ผํ•˜๊ฒŒ ๋‹ด๊ธด ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. 

pca.explained_variance_ratio_

์ƒˆ๋กœ์šด ๋ณ€์ˆ˜๊ฐ€ ์„ค๋ช…ํ•˜๋Š” ๋ถ„์‚ฐ์˜ ๋น„์œจ์€ ์ค„์–ด๋“ค์—ˆ์ง€๋งŒ , ๋‘๊ฐ€์ง€ ๋ณ€์ˆ˜์˜ ๊ฐ ๋ถ„์‚ฐ์ด ๋™์ผํ•˜๊ฒŒ ๋‹ด๊ธด๊ฒƒ์ด ๋” ์ค‘์š”ํ•˜๋‹ค. 

data['pc1'] = pca.transform(scaler_x)
data.head()

์ •๊ทœํ™”๋œ ๋ฐ์ดํ„ฐ๋ฅผ pca ๋ณ€ํ™˜ํ•˜์—ฌ pc1 ์ปฌ๋Ÿผ์— ๋„ฃ์–ด์ฃผ์—ˆ๋‹ค. 

 

 

- ์ƒ๊ด€๊ณ„์ˆ˜ ๋น„๊ต

sns.jointplot(data=data, x=data['pc1'], y=data['medv'], kind='reg')

data['pc1'].corr(data['medv'])

data['b'].corr(data['medv'])

์ด์ฒ˜๋Ÿผ ์ƒˆ๋กœ์šด ๋ณ€์ˆ˜ pc1๊ณผ ์ง‘๊ฐ’์˜ ์ƒ๊ด€๊ณ„์ˆ˜๊ฐ€ ์˜ˆ์ „ ๋‘ ๋ณ€์ˆ˜์˜ ์ƒ๊ด€๊ณ„์ˆ˜๋ณด๋‹ค ๋” ๋†’์•„์ง„ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

 

 


์ƒ๊ด€์„ฑ์ด ์—†๋Š” ๋‘ ๊ฐ€์ง€์˜ ๋ณ€์ˆ˜๋ฅผ ์ƒ๊ด€์„ฑ์ด ๋” ๋†’์•„์ง€๋„๋ก ํ•˜๋Š” ๋ณ€์ˆ˜๋ฅผ ์ƒ์„ฑํ•˜๋Š” pca๋ฅผ ํ•™์Šตํ•˜์˜€๋‹ค. ๋‹ค์Œ์‹œ๊ฐ„์—๋Š” ์˜ค๋Š˜ ํ•™์Šตํ•œ pca๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ฐจ์›์„ ์ถ•์†Œํ•˜๊ณ , ๊ตฐ์ง‘ํ™”, ์‹œ๊ฐํ™”๋ฅผ ํ•˜๋Š” ์‹ค์Šต์„ ํ•œ๋‹ค. 


 

 

 

+ Recent posts