이전 포스팅(https://pydata.tistory.com/29)에 정리한 x_new 데이터와 y 데이터를 가지고, 머신러닝 알고리즘에게 학습을 시키는 과정을 보겠습니다. 일차함수 관계식을 가지고 만들었기 때문에, (x_new, y) 좌표에 점을 찍으면 직선 형태로 나타납니다. 이와 같이 두 변수 사이의 관계가 직선 형태를 갖는 경우 선형 관계에 있다고 말합니다.
필요한 라이브러리 불러오기
통계학에서는 선형회귀분석이라고 부르는데, 사이킷런(sklearn) 라이브러리는 선형회귀분석을 포함한 다양한 통계 툴을 지원합니다. LinearRegression 클래스 함수는 통계학의 선형회귀분석을 처리합니다.
>>> from sklearn.linear_model import LinearRegression
머신러닝 모델 객체 정의하기
LinearRegression 클래스 객체를 생성하고, 변수 lr에 저장합니다. LinearRegression 클래스 함수의 인수에 다양한 파라미터를 설정할 수 있습니다. 예를 들어, LinearRegression(fit_intercept=False, n_jobs=-1) 이라고 정의하면, 일차함수 식의 y절편인 b값을 계산하지 않습니다. n_jobs는 모델학습에 사용할 CPU 개수를 지정할 때 사용하는데, -1은 모든 CPU를 할당하여 사용한다는 뜻입니다. 2개의 CPU가 있는 컴퓨터에서 1개의 CPU만 사용하고 싶을 때는, n_jobs=1이라고 지정할 수 있습니다.
>>> lr = LinearRegression()
주어진 데이터로 모델 학습시키기
머신러닝 모델 객체를 만든 뒤에, 학습 데이터 x_new와 목표 값(정답) y를 모델에 주입하고 학습을 시킵니다. 이때 fit 메소드를 사용하는데, 실행을 하면 예측값의 오차가 가장 작은 함수 관계식을 찾게 됩니다. 기울기(a)는 2, y절편(b)는 -1로 거의 정확하게 관계식을 찾는데 성공했습니다.
>>> lr.fit(x_new, y)
>>> print ("기울기: ", lr.coef_)
>>> print ("y절편: ", lr.intercept_)
기울기: [2.]
y절편: -0.9999999999999996
새로운 x 데이터에 대한 y값 예측하기
전 단계에서 훈련을 마친 선형회귀 모델을 이용하여 새로운 데이터에 대한 목표값을 예측하겠습니다. 예측을 위한 새로운 데이터셋을 준비하고 x_test 변수에 저장합니다. 11~15 범위의 정수를 모델의 x 변수 입력 형태에 맞게 입력합니다.
>>> x_test = np.arange(11, 16, 1).reshape(-1, 1)
>>> x_test
array([[11],
[12],
[13],
[14],
[15]])
모델을 가지고 예측하는데 predict 메소드를 사용합니다. x 변수 값을 입력받아서 y값을 예측하게 됩니다. 예측값을 변수 y_hat에 저장합니다. 결과값은 21, 23, 25, 27, 29입니다.
>>> y_hat = lr.predict(x_test)
>>> y_hat
array([21., 23., 25., 27., 29.])
'인공지능 > 딥러닝' 카테고리의 다른 글
[가장 쉬운 딥러닝] 일차함수 예제로 실습하기 ③ - Tensorflow, Keras (0) | 2020.04.21 |
---|---|
[가장 쉬운 딥러닝] 일차함수 예제로 실습하기 ① - 데이터셋 준비 (0) | 2020.04.20 |
구글 코랩(Colab) 시작하기 (0) | 2020.03.14 |