728x90
1. 상관계수와 상관분석의 기초
두 변량의 상관관계는? 상관계수
- Pearson Correlation Coefficient
- 두 변수 사이에 존재하는 선형적인 상관관계를 수치로 나타낸 것
- 크기는 -1 ~ +1으로, 값이 0일 경우 상관관계가 없는 것임
- 부호가 (+)이면 양의 상관관계, 부호가 (-)이면 음의 상관관계를 의미
DataFrame 내에서의 상관계수 도출
- english.csv : TOEIC, TEPS, TOEFL의 점수 파일
import pandas as pd
df = pd.read_csv('english.csv')
df_corr = df.corr(method = 'pearson')
df_corr
- 주어진 데이터 중 결측치가 부분적으로 존재할 때 pandas는 어떻게 상관계수를 계산?
- 해당 데이터 쌍을 계산에서 무시
상관계수 해석에서의 유의점
- Pearson 상관계수는 선형적인 상관관계를 나타내는 지표이다
- Y = X^2일 때 Pearson 상관계수로는 상관관계를 찾아내기 어려울 수 있음
- 극복 방법? 루트Y와 X의 상관관계를 살펴보기
- 큰 상관계수가 인과관계를 보장하는 것은 아니다
- 예시) 모기 개체수와 아이스크림 판매량은 0.88로 강한 양의 상관관계
- 상관계수의 크기와 기울기를 혼동해서는 안된다.
값이 아닌 순위를 기준으로
- 순위에 따른 Spearman 상관계수의 도출
import pandas as pd
df = pd.read_csv('english.csv')
df_corr = df.corr(method = 'spearman')
df_corr
- 순위 기반 상관계수 도출이 Pearson 상관계수 도출보다 유리한 상황은?
- 높은 상관관계를 가지고 있음에도 선형적 상관관계를 가지고 있지 않을 때 유용
- Spearman과 대비되는 Kendall 상관계수의 특징은?
네가 오르면 나도 오른다, Kendall
- 전체 데이터가 가질 수 있는 순서쌍
- ex. 6개의 행이 있을 때 6C2 = 15쌍
- concordant 순서쌍: A 속성이 더 높은 사람이 B 속성도 더 높은 순서쌍
- 모든 순서쌍은 concordant 순서쌍이거나 discordant 순서쌍 둘 중에 하나에 해당함
- 속성의 값이 같을 경우에는 무시함
- concordant 순서쌍 - discordant 순서쌍으로 빼주는 이유? 전체 scale이 -1 ~ +1이기 위해서
2. 선형 회귀의 뜻과 그 실제
사용할 DataFrame
예측을 위한 선형 회귀 모형의 식은?
- 학년별 내신 평균 등급과 모의고사 원점수 총점으로 수능 원점수 총점 예측
- 위 식에서 궁금한 것은 θ 값 여섯 개 -> 결정하는 기준은? MSE 최소화
선형 회귀의 궁극적 목표, MSE 최소화
- MSE(Mean Squared Error, 평균제곱오차)
- MSE를 최소화하는 방향으로 선형 회귀가 이루어짐
선형 회귀 구현을 위한 라이브러리
- 필수 라이브러리 불러오기
import pandas as pd # csv 파일을 dataframe으로
import matplotlib.pyplot as plt # 데이터 시각화
from sklearn.model_selection import train_test_split # 데이터 분리
from sklearn.linear_model import LinearRegression # 선형 회귀
- 데이터를 불러온 뒤 독립 변수와 종속 변수를 분리
df = pd.read_csv('score.csv')
df_x = df[['1st', '2nd', '3rd', '6mo', '9mo']] # 독립 변수 x
df_y = df['suneung'] # 종속 변수 y
- 학습용 데이터와 검증용 데이터를 분리
- 20%는 validation에, 80%는 train에 사용
- 데이터를 분리할 때 편향되지 않도록 주의해야 함
x_train, x_valid, y_train, y_valid = train_test_split(df_x, df_y, random_state = 0, test_size = 0.20)
- 선형 회귀 모형 생성하기
reg = LinearRegression()
- 학습 데이터로 선형 회귀 식에서의 계수 결정
reg.fit(x_train, y_train)
- 상수항과 선형 회귀 계수 출력
print(reg.coef_) # 회귀 계수
print(reg.intercept_) # 상수항
- 선형 회귀 모형 생성하기
y_pred = reg.predict(x_valid) # train으로 학습, validation으로 검증
y_pred
데이터가 적다면, K-Fold
- K-fold validation을 위한 Python 라이브러리
from sklearn.model_selection import KFold
'대학공부 > 데이터과학' 카테고리의 다른 글
여러 가지 방법을 이용한 분류 (0) | 2024.04.29 |
---|---|
개인정보 비식별화와 데이터 윤리 (0) | 2024.04.08 |
의사결정나무를 이용한 분류와 예측 (1) | 2024.04.01 |
탐색적 데이터 분석(EDA)과 데이터 시각화 (1) | 2024.03.24 |
OpenAPI와 공공데이터에 대한 이해 (0) | 2024.03.11 |