머신러닝/머신러닝 할 때 꼭 짚고 넘어갈 것

머신러닝 전 꼭 알고 가자! - 상관분석 _ DataFrame 의 corr 함수, 차트로 표현하는 방법

Cong_S 2022. 5. 4. 23:40

데이터를 분석하는데에 있어 가장 중요한 것 중에

하나는 데이터들간의 어떤 관계에 놓여있는지 파악하는 것이다.

 

파이썬에도 이와 같은 기능을 하는 함수가 있는데

corr 함수와 차트로 시각화하여 파악할 수 있는 scatter 함수이다.

비례, 반비례 등의 관계를 파악할 수 있는 함수에 대해 알아보자.

 

위 데이터는 각종 차량에 대한 데이터이다. 

이 중 displ ,  comb 컬럼 데이터들간의 어떤 관계가 있는지 파악해보자.

 

plt.scatter(data = df, x = 'displ', y= 'comb')

plt.title('Displ Vs Comb')
plt.xlabel('Displacement (L)')
plt.ylabel('Combined Fuel Eff (mpg)')

plt.show()

먼저 차트로 만들어보도록 하자.

scatter 함수로 만들 수 있다.

파라미터에는 데이터프레임, x축에 들어갈 컬럼, y축에 들어갈 컬럼 을 입력한다.

 

이와 같은 차트가 표시되는 것을 볼 수 있다.

시작점에서 좌상단으로 꾸준히 올라가는 모습을 보이면 비례관계

역으로 갈수록 낮아지는 모습을 보이면 반비례관계

파악할 수 없으면 두 데이터는 서로 영향이 없는 관계를 뜻한다.

 

# seaborn 의 regplot 을 이용하는 방법

sb.regplot(data = df, x= 'displ',y = 'comb')

# reg 의 뜻은? 차트에 선이 있는데 regression (회귀) : 데이터의 fitting 한다는 의미! 데이터를 최적으로 맞추는 선
# 오른쪽 아래로 내려가니 반비례이다.

 

seaborn의 regplot으로도 관계를 파악할 수 있다.

이 함수는 데이터들간의 평균값을 선으로 그려주기 때문에 보다 쉽게

상관관계를 파악할 수 있다.

 

이를 corr 함수로 수치화시켜 파악할 수 있다.

df[['displ','comb']].corr()

+ 일수록 비례관계이고, - 일수록 반비례관계이다.

0에 가까울수록 서로 관계없음을 뜻한다.

위 데이터의 1.0000은 자기 자신과의 비교이므로 의미없는 데이터이다.