정리
알고리즘의 원리, 개념
- 선형회귀식으로 target과의 관계를 설명
- 오차를 최소화 하면서 parameter를 찾아간다.
전제조건
성능
단순 회귀
다중 회귀
다중 공선성
- 다중회귀시, feature들 간에 독립성이 전제되어야한다.
- 그러나, 하나의 독립변수가 다른 여러 개의 독립변수들로 잘 예측이 되는 경우 이 가정이 깨지게 된다.
분산 팽창 지수(VIF)
- 다중 공선성 확인 방법
- 5이상, 다중 공선성 존재, 10 이상 강한 다중 공선성
but.. 다중 공선성을 항상 문제시하는건 아니다!
모델링 절차
0. 데이터 준비
import numpy as np
import pandas as pd
데이터 정리
data['PriceDiff'] = data['CompPrice'] - data['Price']
data.drop('CompPrice', axis=1, inplace = True)
데이터 분할: x, y 나누기
target = 'medv'
x = data.drop(target, axis=1)
y = data.loc[:, target]
NaN 조치
가변수화
x = pd.get_dummies(x, columns=['Education', 'ShelveLoc', 'Urban', 'US'], drop_first=True)
데이터 분할: train, validation 나누기
- 여기서는 이미 test set이 나누어져 있다고 가정함
x_train, x_val, y_train, y_val = train_test_split(x, y, test_size = .3, random_state = 2022)
features = ['crim']
x_train1 = x_train[features]
x_val1 = x_val[features]
Scaling
scaler = MinMaxScaler()
x_train_s1 = scaler.fit_transform(x_train)
x_val_s1 = scaler.transform(x_val)
scaler2 = StandardScaler()
x_train_s2 = scaler.fit_transform(x_train)
x_val_s2 = scaler.transform(x_val)
1. 함수 불러오기
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import r2_score, mean_squared_error, mean_absolute_error, mean_absolute_percentage_error
import warnings
warnings.filterwarnings(action='ignore')
2. 선언(모델 설계): 모델 알고리즘을 어떻게 쓸지
model1 = LinearRegression()
3. 학습(모델링)
model1.fit(x_train1, y_train)
4. 검증: 예측
pred1 = model1.predict(x_val1)
5. 검증: 평가
mean_squared_error(y_val, pred1)
mean_squared_error(y_val, pred1, squared = False)
mean_absolute_error(y_val, pred1)
mean_absolute_percentage_error(y_val, pred1)
1 - mean_absolute_percentage_error(y_val, pred1)
+ 회귀계수와 절편 살펴보기
model1.coef_, model1.intercept_
(array([-0.3570669]), 24.214633238567504)