본문 바로가기
머신러닝

[머신러닝] Multiple Linear Regression: predict

by eyoo 2022. 5. 6.

하나의 변수일때 심플, 두개 이상일때 멀티플 리니어 리그레션이라고 부른다.

 

 

 

 

멀티플 리니어 리그레션으로 학습해보자.

 

 

# Nan 처리
df.isna().sum()  # Nan 없음

# X, y 분리
X = df.loc[:,'R&D Spend':'State']
y = df['Profit']

# 인코딩
from sklearn.preprocessing import LabelEncoder, OneHotEncoder
from sklearn.compose import ColumnTransformer
ct = ColumnTransformer( [ ('encoder',OneHotEncoder(), [3] ) ] , remainder='passthrough' )
X = ct.fit_transform(X)

# 학습용과 테스트용으로 분리
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=3)

# 인공지능 모델링
from sklearn.linear_model import LinearRegression
regressor = LinearRegression()
regressor.fit(X_train,y_train)

# MSE 를 구해서 성능 측정
y_pred = regressor.predict(X_test) 
error = y_test-y_pred
(error**2).mean()

# MSE값으로 98047662.34가 나온다.

 

 

이를 차트로 표현하면:

 

in:

plt.plot(y_test.values)
plt.plot(y_pred)
plt.legend(['Real','Pred'])
plt.savefig('chart3.jpg')
plt.show()

out:

# savefig 함수를 통해 사진으로 저장할수 있다.

 

 

coef_ 함수와 intercept_ 함수를 통해 계수와 상수를 알아낼수 있다.

 

coef_로 계수찾기 :

 

in:

regressor.coef_

out:

array([ 8.42320023e+02, -7.76647891e+02, -6.56721318e+01,  8.23509041e-01,
       -8.62452561e-02,  2.27006887e-02])

 

 

intercept_로 상수찾기 :

 

in:

regressor.intercept_

out:

56733.68528534037

 

 

이렇게 만들어진 인공지능을 통해 주어진 데이터에 대한 수익을 예측해보자.

 

RnD비용은 220000달러, 운영비는 190000달러, 마케팅비용은 500000달러이고 플로리다주에 있는 회사의 수익은?

 

인공지능에게 위의 질문을 제시하고 답을 얻기 위한 몇가지 순서가 있다:

 

1. 넘파이 어레이 데이터로 새로운데이터를 만든다.

 

new_data = np.array([220000,190000,500000,'Florida'])

 

 

2. 넘파이 어레이의 shape을 맞춰준다.

 

new_data.shape  # 1차원
new_data=new_data.reshape(1,4)  #2차원으로 변환

 

 

3. 인공지능을 만들때 사용한 인코딩으로 바꾼다. (위에 ct로 설정한 변수를 활용)

 

in:

new_data = ct.transform(new_data)
new_data

out:

array([['0.0', '1.0', '0.0', '220000', '190000', '500000']], dtype='<U32')

※ 때문에 인공지능을 사용하기위해 regressor와 ct를 파일로 만들어서 머신러닝 조직에서 백핸드 조직으로 배포해줘야 한다.

 

 

4. 만약 데이터가 float이 아니면 float으로 바꿔준다.

 

new_data = new_data.astype(float)

 

 

5. 예측 함수인 predict를 호출한다.

 

in:

regressor.predict(new_data)

out:

array([232092.77204128])

# 232,092.77 달러로 예상된다.

 

 

 

 

 

댓글