[Scikit-learn] 회귀모델 실습

Ethan·2022년 5월 11일
0

사이킷런 회귀 모델 실습

import numpy as np
import matplotlib.pyplot as plt

r = np.random.RandomState(15)

# x = 입력 데이터
x = 10 * r.rand(100)

# y = 정답 데이터
y = 2 * x - 3 * r.rand(100)

# shape 확인
x.shape
>>> (100,)
y.shape
>>> (100,)

# 시각화
plt.scatter(x, y)

두 변수 모두 1차원 벡터이다.
그래프를 보면 일반선형회귀로 예측이 가능할 것이란 추측을 할 수 있다.

from sklearn.linear_model import LinearRegression

# 모델 생성
model = LinearRegrssion()

# x를 행렬로 변환한다.
X = x.reshape(100, 1)

# 모델 학습
model.fit(X, y)

# 예측모델 생성
# reshape 함수는 -1을 인자로 넣어주면 자동으로 남은 숫자를 계산한다.
x_new = np.linspace(-1, 11, 100)
X_new = x_new.reshape(100,1)
y_new = model.predict(X_new)

X_ = x_new.reshape(-1,1)
X_.shape
>>> (100,1)

X_ = x_new.reshape(2,-1)
X_.shape
>>> (2, 50)

# 회귀모델의 평가는 일반적으로 RMSE를 사용한다.
from sklearn.metrics import mean_squared_error

error = np.sqrt(mean_squared_error(y,y_new))

print(error)
>>> 9.299028215052264

# 시각화
plt.scatter(x, y, label='input data')
plt.plot(X_new, y_new, color='red', label='regression line')

회귀선이 실제 값과 어느 정도 일치하는지 확인할 수 있다.

profile
재미있게 살고 싶은 대학원생

0개의 댓글