상세 컨텐츠

본문 제목

[머신러닝]Multiple Linear Regression

coding/머신러닝

by golduny_zoo 2021. 5. 17. 11:05

본문

728x90

여러 변수가 올때 linear Regression구하는 식

Import

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

 

 


학습 데이터 확인하기 

데이터에 null데이터가 없다는 것을 확인했다. 
인덱스 3의 State는 문자열로 되어있으므로 onehot인코딩을 써야한다.

숫자로 되어있는 데이터들의 크기가 들쑥날쑥하다.


학습데이터 전처리 

1. 내가 예측하고 싶은 부분은 Profit이므로 y로 넣어주고 나머지는 X

X = df.iloc[:,:3+1]
y = df.Profit

2. 문자열을 One-Hot 인코딩

from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import OneHotEncoder
ct = ColumnTransformer([('encoder',OneHotEncoder(),[3])],remainder='passthrough')
X=ct.fit_transform(X) #df자체를 ct에 넣게 되면 원핫인코딩을 하는 컬럼이 앞으로 나오게 된다. 

3. test, traing 셋 분리 

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test=train_test_split(X,y,test_size = 0.2, random_state =7)


모델링

from sklearn.linear_model import LinearRegression
regressor = LinearRegression()
regressor.fit(X_train, y_train)
y_pred=regressor.predict(X_test)


오차확인하기 

#MSE
((y_test - y_pred)**2).mean()
>>> 100911162.8059515

모델로 새로운 케이스 예측해 보기

캘리포니아에 있는 회사이고, 연구개발비는 210,000달러, 운영비는 170,000달러 마케팅비는 500,000달러를 쓰는 회사가 있는데, 이회사는 얼마의 수익을 벌까?

new_data=np.array([1,0,0,210000,170000,500000])
new_data=new_data.reshape(1,-1)
new_data
>>> array([[     1,      0,      0, 210000, 170000, 500000]])
regressor.predict(new_data)
>>> array([229038.02831337])

관련글 더보기