데이터분석/데이터 탐색

두 변수 간의 관련성에 대한 이야기

상선약수64 2023. 9. 27. 01:30
반응형
  • 상관계수는 상관관계 분석에서 두 변수 간에 선형 관계의 정도를 수량화하는 통계적 측도입니다(로 기호화). 상관계수(r)는 -1에서 1사이의 값을 가지며, 1일 경우 완전한 양(+)의 상관관계, -1일 경우 완전한 음(-)의 상관관계를 가진다고 할 수 있습니다. 0에 가까우면 두변수 간의 선형관계는 약하다고 볼 수 있습니다.

 

두변수의 관련성은
상관계수와 산점도로 확인

 

상관계수와 산점도

 

1. 상관계수 구하기
  • 사용데이터는 iris(붓꽃) 데이터를 활용합니다. iris데이터에 대한 설명을 보려면 여기를 클릭하고 2. 붓꽃테이터 이해하기를 보시면 됩니다.
#데이터를 불러오고, DESCR속성을 이용하여 데이터의 상세정보를 확인
from sklearn.datasets import load_iris
iris = load_iris()
print(iris.DESCR)
  • iris데이터를 데이터프레임 형으로 변환하고, head()데이터를 확인합니다.
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
df = pd.DataFrame(iris.data)
df.head()
  • 상관계수는 cor() 메소드를 이용하면 확인할 수 있습니다.

잠깐만 : 상관관계에 대해 가설 검증

가설 :

import scipy.stats as stats
r, p_value = stats.pearsonr(df[0],df[1] )
print('상관계수', r, "\n", 'p-value', p_value)

결과 : 

2. 산점도 그리기

  • scatter() 메소드로 산점도를 그릴수 있음
plt.scatter(x=df[2],y=df[3], c="red")

  • 붓꽃 종별로 색상을 변경해서 산점도를 그려보고자 합니다 
  • 그전에 타겟 변수를 데이터 프레임 df에 추가하고, 컬럼명을 변경합니다.
df.columns = ['sepal length', 'sepal width','petal length', 'petal width' ]
df['target'] = pd.Series(iris.target)
df.head()
  • 붓꽃 종별로 색상을 변경하려면 c=df['taget']을 설정하고 scatter() 메소드를 사용하면 됩니다.
plt.scatter(x=df['sepal length'],y=df['sepal width'], c=df['target'], cmap="rainbow")
plt.title("iris scatter")
plt.xlabel('sepal length')
plt.ylabel('sepal width')

 

3. 히트맵 그리기
import seaborn as sns
import matplotlib.pyplot as plt

corr_matrix = df.corr()
print(corr_matrix)

#sns.heatmap(corr_matrix, cmap='coolwarm', annot=True, fmt=".2f")
sns.heatmap(corr_matrix, cmap='bwr_r', annot=True)

Tip :print(plt.colormaps())로 컬러맵을 확인할 수 있음

 

4. 분석 및 향후 과제는?