인공지능 머신러닝 - 다중 선형 회귀 모델(Multiple Linear Regression)

 

이 글은 단순 선형 회귀 모델의 글과 연관 있습니다.

https://luvris2.tistory.com/45

 

인공지능 머신러닝 - 단순 선형 회귀 모델(Simple Linear Regression)

# 선형 회귀(Linear Regression) 종속 변수 y와 한 개 이상의 독립 변수 X와의 선형 상관 관계를 모델링하는 회귀 분석 기법 독립 변수가 한개면 단순 선형 회귀, 두개 이상이면 다중 선형 회귀 데이터

luvris2.tistory.com


다중 선형 회귀(Multiple Linear Regression)

이전 글에서 종속 변수 y와 한 개의 독립 변수 X와의 선형 상관 관계를 모델링해보았다.

이번에는 예시를 통하여 두 개 이상의 독립 변수 X와의 선형 상관 관계를 모델링해보자.

 

  • 다중 선형 회귀 함수는 직선이기 때문에 일차 함수로 표현
    • y= ax1 + bx2 + cx3 + dx4 .... + h
    • a , b, c, d : 계수
    • h : 상수항

 

  • 신생 회사의 데이터(개발비, 운영비, 마케팅비)가 있으면 그 회사가 얼마의 수익을 낼지 예측
  • 예시에 쓰일 데이터프레임

50_Startups.csv
0.00MB


라이브러리 호출

import matplotlib.pyplot as plt
# 표 작성을 위한 라이브러리

import pandas
# 데이터프레임 생성을 위한 라이브러리

from sklearn.preprocessing import OneHotEncoder
from sklearn.compose import ColumnTransformer
# 카테고리컬 인코딩을 위한 라이브러리

from sklearn.model_selection import train_test_split
# 인공지능 학습을 위한 라이브러리

from sklearn.linear_model import LinearRegression
# 인공지능 모델링을 위한 라이브러리

인공지능 모델링의 순서

  1. 피처 스케일링(전처리)
  2. 학습용과 테스트용 데이터 분리
  3. 모델링
  4. 성능 테스트 및 오차 확인

인공지능 학습 전 해야 할 것 (피처 스케일링)

인공지능은 문자열을 처리 할 수 없기 때문에 컴퓨터가 이해 할 수 있는 변환 작업이 필요

 

1. NaN 처리

  • 이 데이터프레임에서는 NaN이 없으므로 따로 처리하지 않아도 됨

 

2. 데이터(X, y) 준비

  • y(종속 변수)= 이익
  • X(독립 변수)= 개발비, 운영비, 마케팅비, 지역

 

3. 카테고리컬 데이터로 변환

 

피처 스케일링(Feature Scaling) - Encode(Label/Onehot)

# 카테고리컬 인코딩 컴퓨터는 텍스트를 인식 할 수 없기 때문에 데이터들을 숫자로 바꿔주는 작업 카테고리컬 인코딩의 종류 종류 Label Encoding : 카테고리컬 데이터를 숫자로 변환, 0부터 넘버링

luvris2.tistory.com

 

  • 확인 작업
    • 'State' 컬럼은 공통 될 수 있기 때문에 그룹화(카테고리컬 데이터)
    • 'State' 컬럼은 숫자가 아닌 문자열이기 때문에 숫자로 변환(카테고리컬 인코딩)
      • 'State' 숫자로 변환 될 데이터 확인 (0: California, 1: Florida, 2: New York)

<데이터가 3개임을 확인>

 

  • 실제 변환 작업
    • 카테고리컬 데이터가 3개 이상일 경우, 원핫 인코딩을 해야 인공지능 성능 향상
    • 독립변수 X의 'State' 컬럼에는 문자열이 존재하므로 원핫 인코딩 진행
      • from sklearn.preprocessing import OneHotEncoder
        from sklearn.compose import ColumnTransformer
      • ct는 각각의 열에 지정한 함수를 수행하는 역할(원한 인코딩 수행)


준비된 데이터(학습용/테스트용) 분리

  • train_test_split를 이용하여 데이터 분리
    • import sklearn.model_selection import train_test_split
  • 80% 학습, 20% 테스트, 시드=15


인공지능 다중 선형 회귀 모델링

  • LinearRegression를 이용하여 인공지능 모델링
    • from sklearn.linear_model import LinearRegression


인공지능 성능 테스트

 

  • 보기 편하게 표로 작성

파란선이 실제값, 주황선이 예측값


신생 회사의 수익 예측 해보기

  • 개발비 22만, 운영비 19만, 마케팅비 5만 (달러)
  • 플로리다주에 있는 회사

1. 넘파이로 새로운 데이터 생성

 

2. 인공지능이 학습 할 수 있게 2차원 배열로 변경

<1행 4열의 데이터로 변경>

 

3. 피처 스케일링(전처리) 진행

  • 앞에 3개의 값 0 1 0 :  기존에 원핫 인코딩된 Florida의 값 (0: California, 1: Florida, 2: New York)
  • 2.2e+05 ~ : 22만 달러 ~ 기입한 데이터의 값, e+숫자는 10의 제곱을 뜻함

 

4. 학습한 데이터가 실수(Float)이기 때문에 실수형으로 형변환

 

5. 예상 수익(예측값) 확인

  • 기존에 모델링한 다중 선형 회귀 모델 'regressor'에 새로운 데이터 추가
  • 예측함수 predict 호출하여 예측 값 확인