하나의 변수일때 심플, 두개 이상일때 멀티플 리니어 리그레션이라고 부른다.
멀티플 리니어 리그레션으로 학습해보자.
# 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 달러로 예상된다.
'머신러닝' 카테고리의 다른 글
[머신러닝] SVM(Support Vector Machine) (0) | 2022.05.09 |
---|---|
[머신러닝] K-Nearest Neighbor (KNN) (1) | 2022.05.06 |
[머신러닝] Logistic Regression, Dealing NaN (0) | 2022.05.06 |
[머신러닝] Linear Regression (0) | 2022.05.06 |
[머신러닝] 전처리 과정 (Data preprocessing): NaN 처리, Label Encoding, One-hot Encoding, Feature Scaling, train_test_split (0) | 2022.05.05 |
댓글