반응형
- 상관계수는 상관관계 분석에서 두 변수 간에 선형 관계의 정도를 수량화하는 통계적 측도입니다(로 기호화). 상관계수(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. 분석 및 향후 과제는?
'데이터분석 > 데이터 탐색' 카테고리의 다른 글
다양한 데이터 스케일링(Data Scaling) (0) | 2023.11.05 |
---|---|
교차분석과 상관분석 (0) | 2023.10.03 |
데이터 전처리 과정 (2) | 2023.10.02 |
데이터 분석의 시작은 데이터 탐색이다. (0) | 2023.09.30 |