반응형
이 글은 단순 선형 회귀 모델의 글과 연관 있습니다.
https://luvris2.tistory.com/45
다중 선형 회귀(Multiple Linear Regression)
이전 글에서 종속 변수 y와 한 개의 독립 변수 X와의 선형 상관 관계를 모델링해보았다.
이번에는 예시를 통하여 두 개 이상의 독립 변수 X와의 선형 상관 관계를 모델링해보자.
- 다중 선형 회귀 함수는 직선이기 때문에 일차 함수로 표현
- y= ax1 + bx2 + cx3 + dx4 .... + h
- a , b, c, d : 계수
- h : 상수항
- 신생 회사의 데이터(개발비, 운영비, 마케팅비)가 있으면 그 회사가 얼마의 수익을 낼지 예측
- 예시에 쓰일 데이터프레임
라이브러리 호출
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. NaN 처리
- 이 데이터프레임에서는 NaN이 없으므로 따로 처리하지 않아도 됨
2. 데이터(X, y) 준비
- y(종속 변수)= 이익
- X(독립 변수)= 개발비, 운영비, 마케팅비, 지역
3. 카테고리컬 데이터로 변환
- 컬럼에 문자열이 존재 할 경우 진행
- 카테고리컬 데이터 인코딩 상세보기 : https://luvris2.tistory.com/43
- 확인 작업
- 'State' 컬럼은 공통 될 수 있기 때문에 그룹화(카테고리컬 데이터)
- 'State' 컬럼은 숫자가 아닌 문자열이기 때문에 숫자로 변환(카테고리컬 인코딩)
- 'State' 숫자로 변환 될 데이터 확인 (0: California, 1: Florida, 2: New York)
- 실제 변환 작업
- 카테고리컬 데이터가 3개 이상일 경우, 원핫 인코딩을 해야 인공지능 성능 향상
- 독립변수 X의 'State' 컬럼에는 문자열이 존재하므로 원핫 인코딩 진행
- from sklearn.preprocessing import OneHotEncoder
from sklearn.compose import ColumnTransformer - ct는 각각의 열에 지정한 함수를 수행하는 역할(원한 인코딩 수행)
- from sklearn.preprocessing import OneHotEncoder
준비된 데이터(학습용/테스트용) 분리
- 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차원 배열로 변경
3. 피처 스케일링(전처리) 진행
- 앞에 3개의 값 0 1 0 : 기존에 원핫 인코딩된 Florida의 값 (0: California, 1: Florida, 2: New York)
- 2.2e+05 ~ : 22만 달러 ~ 기입한 데이터의 값, e+숫자는 10의 제곱을 뜻함
4. 학습한 데이터가 실수(Float)이기 때문에 실수형으로 형변환
5. 예상 수익(예측값) 확인
- 기존에 모델링한 다중 선형 회귀 모델 'regressor'에 새로운 데이터 추가
- 예측함수 predict 호출하여 예측 값 확인
반응형