개발공부

Multiple Linear Regression 실습 예제 본문

Python/Machine Learning

Multiple Linear Regression 실습 예제

mscha 2022. 5. 9. 19:43

아래처럼, 여러개의 features 를 기반으로, 수익을 예측하려 한다.

위와 같이, 여러개의 변수들을 통해, 수익과의 관계를 분석하고

이를 통해, 새로운 데이터가 들어왔을 때, 수익이 어떻게 될 지를 예측하고자 한다.

 

아래는 하나의 변수일때와, 여러개의 변수가 있을때의 linear regression 을 나타낸다.

2차원에서는 선 이지만, 3차원에서는 평면이 된다.

 

그후 오차가 가장 적을 때 b 값들을 찾으면 된다.

 

아래 데이터로 실습해보자.

50_Startups.csv
0.00MB

# 어떤 신생 회사의 데이터가 있으면, 그 회사가 얼마의 수익을 낼 지 예측해보기

df = pd.read_csv('data/50_Startups.csv')
df.head()

# 1.NaN 처리
>>> df.isna().sum()
R&D Spend          0
Administration     0
Marketing Spend    0
State              0
Profit             0
dtype: int64
# 2. X, y로 분리
X = df.loc[:, 'R&D Spend' : 'State']
y = df.loc[:, 'Profit']
# X 의 컬럼중에 숫자가 아닌 컬럼이 있으니, 숫자로 바꿔준다.
# 원 핫 인코딩 이용
>>> from sklearn.preprocessing import OneHotEncoder
>>> from sklearn.compose import ColumnTransformer
>>> df['State'].unique()
array(['New York', 'California', 'Florida'], dtype=object)
>>> sorted(df['State'].unique())
['California', 'Florida', 'New York']
>>> ct = ColumnTransformer( [ ('encoder', OneHotEncoder(), [3]) ], 
                       remainder= 'passthrough')
>>> X =ct.fit_transform(X)                       
>>> X.shape
(50, 6)
# X, y 준비 끝났으니
# 학습용과 테스트용으로 데이터 분리

>>> 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 = 15)
>>> X_train.shape                                        
(40, 6)
>>> X_test.shape
(10, 6)
# 인공지능 모델링
>>> from sklearn.linear_model import LinearRegression\
>>> regressor = LinearRegression()
# 학습시키기
>>> regressor.fit(X_train, y_train)
LinearRegression()

>>> error = y_test - y_pred

# MSE
>>> (error ** 2).mean()
124331765.37535706​
# 인공지능 모델링
>>> from sklearn.linear_model import LinearRegression
>>> regressor = LinearRegression()
>>> regressor.fit(X_train, y_train)
LinearRegression()
# 차트로 표현
plt.plot(y_test.values)
plt.plot(y_pred)
plt.legend(['Real', 'Pred'])
plt.show()