728x90
반응형
반응형
다중 선형 회귀(Multiple Linear Regression)
1. 다중 선형 회귀(Multiple Linear Regression)란?
예를 들어 주택 임대료를 예측한다고 했을 때, 주택의 면적만 고려해서 예측하면 단순회귀가 되겠지만 지어진지 얼마나 오래되었는지, 지하철역과 거리가 얼마나 가까운지 등 다양한 요소의 영향을 받는다. 결국 주택 임대료 y를 예측하려면 여러 개의 변수 x를 포함해야 하는 거다.
- 다중 선형 회귀는 하나 이상의 독립 변수(입력 데이터)를 사용하여 종속 변수(출력 데이터)를 예측하는 회귀 알고리즘입니다.
- 수학적 표현: Y=β0+β1X1+β2X2+⋯+βnXn+ϵ
- YYY: 종속 변수
- X1,X2,…,XnX_1, X_2, \dots, X_nX1,X2,…,Xn: 독립 변수
- β0\beta_0β0: 절편
- β1,β2,…,βn\beta_1, \beta_2, \dots, \beta_nβ1,β2,…,βn: 독립 변수의 계수(기울기)
- ϵ\epsilonϵ: 오차(term)
- Y=β0+β1X1+β2X2+⋯+βnXn+ϵY = \beta_0 + \beta_1X_1 + \beta_2X_2 + \cdots + \beta_nX_n + \epsilon
- 그림으로 나타내면 아래와 같습니다.
2. 다중 선형 회귀(Multiple Linear Regression) 실습
아래처럼, 여러개의 features 를 기반으로, 수익을 예측하려 한다.
위와 같이, 여러개의 변수들을 통해, 수익과의 관계를 분석하고,
이를 통해, 새로운 데이터가 들어왔을 때, 수익이 어떻게 될 지를 예측하고자 한다.
이제, 오차가 가장 적을때의 b 값들을 찾아보자.
catergorical 로 바꿔주면 된다.
Startups.csv 데이터를 읽으세요.
각각의 피쳐를 분석하여, 어떤 신생 회사의 데이터가 있으면, 그 회사가 얼마의 수익을 낼 지 예측합니다. (투자를 해야 할지 말아야 할지)
# Importing the libraries
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
df = pd.read_csv('../data/50_Startups.csv')
df
출력
: df
2-1. Nan의 유무 확인
df.isna().sum()
출력
: df.isna().sum()
2-2. X 측과 y 측 분리
- X : 2차원 대문자
- y : 1 차원 소문자
- 문자의 경우 int로 변환 작업 진행
- State 컬럼 변경 2가지 이면 0,1로 변경
- 3가지 이상일 경우 =>
- 컬럼 트랜스포머를 이용해서 원핫 인코딩을 하면 원핫인코딩한 컬럼은 모두 왼쪽에 위치한다.
from sklearn.preprocessing import OneHotEncoder
from sklearn.compose import ColumnTransformer
X.head(2)
ct = ColumnTransformer( [ ( 'encoder',OneHotEncoder(), [ 3 ] )],remainder = 'passthrough')
X = ct.fit_transform(X)
X
출력
: X
2-3. training 용과 Test용 분리
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state = 27)
regressor = LinearRegression ()
regressor.fit(X_train, y_train)
출력
: regressor.fit(X_train, y_train)
y_pred = regressor.predict(X_test)
y_pred
y_test
2-4. 오차 계산 : (MSE)
- 평균 제곱 오차(Mean Squared Error, MSE)는 회귀 모델의 성능을 평가하는 데 널리 사용되는 지표입니다.
error = y_test - y_pred
(error **2).mean()
출력
: (error **2).mean()
80000371.9079853
2-5. 데이터 시각화
728x90
반응형
'AI > 이론' 카테고리의 다른 글
132.[Python] [Machine Learning] : 선형 회귀(Linear Regression)와 비선형 회귀(Non-Linear Regression) (0) | 2025.01.31 |
---|---|
131. [Python] [Machine Learning] : 성능 평가 방법과 종류 (0) | 2025.01.31 |
129. [Python] [Machine Learning] : K-NN 알고리즘 (0) | 2025.01.28 |
128. [Python] [Machine Learning] : Logistic Regression(분류) (0) | 2025.01.28 |
124. [Python] [Machine Learning] : 선형 회귀 Linear Regression(연봉 예측) (0) | 2025.01.25 |