목적 : 하나 이상의 특성과 연속적인 타깃 변수 사이의 관계를 모델링하는 것
단순 선형 회귀 : 하나의 특성(설명 변수 x)과 연속적인 타깃(응답 변수 y)사이의 관계를 모델링
y = w0 + w1x
해당 방정식으로 훈련 데이터셋이 아닌 새로운 샘플의 타깃 값을 예측
목적 : 특성과 타깃 사이의 관계를 나타내는 선형 방정식의 가중치를 학습하는 것
회귀 직선 : 데이터에 가장 잘 맞는 위의 그림과 같은 직선
오프셋(잔차) : 회귀 직선과 훈련 샘플 사이의 직선 거리
다중 선형 회귀 : 특성이 여러 개 있는 선형 회귀 모델
-> 다변량 회귀의 2차원 초평면을 시각화하는 좋은 방법이 없기 때문에 여기서는 단변량 회귀를 사용하여 하나의 특성을 가진 예제와 그래프를 다룸
(단변량 회귀와 다변량 회귀는 같은 개념과 평가 기법을 사용하여 모두 호환됨)
주택 데이터셋 : 1978년에 해리슨과 루빈펠드가 수집한 보스턴 교외 지역의 주택 정보 (506개의 샘플)
read_csv 함수 : 주택 데이터셋을 읽어들이기 위한 함수로, 빠르기 때문에 텍스트로 저장된 CSV 형태의 파일을 다룰 때 사용하기 좋음
☑️DataFrame으로 데이터 불러오기☑️
import pandas as pd
df = pd.read_csv('https://raw.githubusercontent.com/rasbt/'
'python-machine-learning-book-3rd-edition/'
'master/ch10/housing.data.txt',
header=None,
sep='\s+')
df.columns = ['CRIM', 'ZN', 'INDUS', 'CHAS',
'NOX', 'RM', 'AGE', 'DIS', 'RAD',
'TAX', 'PTRATIO', 'B', 'LSTAT', 'MEDV']
df.head()
탐색적 데이터 분석(EDA) : 머신 러닝 모델을 훈련하기 전에 첫 번째로 수행할 중요하고 권장되는 단계
-> EDA 그래픽 도구 : 이상치를 감지하고 데이터 분포를 시각화하거나 특성 간의 관계를 나타내는 데 도움
☑️산점도 행렬을 그려서 데이터셋에 있는 특성 간의 상관관계를 시각화☑️
conda install mlxtend
pip instal mlxtend
import matplotlib.pyplot as plt
from mlxtend.plotting import scatterplotmatrix
cols = ['LSTAT', 'INDUS', 'NOX', 'RM', 'MEDV']
scatterplotmatrix(df[cols].values, figsize=(10, 8),
names=cols, alpha=0.5)
plt.tight_layout()
plt.show()
상관관계 행렬 - 공분산 행렬과 밀접하게 관련, 직관적으로 생각하면 상관관계 행렬을 스케일 조정된 공분산 행렬로 생각 가능 -> 특성이 표준화되어 있으면 상관관계 행렬과 공분산 행렬이 같음
상관관계 행렬 - 피어슨의 상관관계 계수를 포함하고 있는 정방 행렬(피어슨의 r) -> 이 계수는 특성 사이의 선형 의존성을 측정
corrcoef 함수 : 피어슨 상관관계 계수 구해주는 함수
heatmap 함수 : 상관관계 행렬을 히트맵으로 나타냄
import numpy as np
from mlxtend.plotting import heatmap
cm = np.corrcoef(df[cols].values.T)
hm = heatmap(cm, row_names=cols, column_names=cols)
plt.show()