선형회귀란?
선형회귀의 정의는 아래 포스팅을 참조바랍니다.
https://math-love.tistory.com/8
1. Linear Regression (선형 회귀)
머신러닝의 목적은 데이터의 알려진 속성들을 학습하여 예측 모델을 만드는데 있다. 이때 잘 찾아 낼 수 있는 가장 직관적이고 간단한 모델은 선(line)이다. 즉, 선형 회귀는 정돈된 데이터들을
math-love.tistory.com
MSE (Mean Squared Error)
선형 회귀 모델을 이용한 예측
지난 포스팅과 마찬가지로 물고기의 길이와 무게 데이터를 다루어 보겠습니다.
import numpy as np
fish_length = np.array(
[8.4, 13.7, 15.0, 16.2, 17.4, 18.0, 18.7, 19.0, 19.6, 20.0,
21.0, 21.0, 21.0, 21.3, 22.0, 22.0, 22.0, 22.0, 22.0, 22.5,
22.5, 22.7, 23.0, 23.5, 24.0, 24.0, 24.6, 25.0, 25.6, 26.5,
27.3, 27.5, 27.5, 27.5, 28.0, 28.7, 30.0, 32.8, 34.5, 35.0,
36.5, 36.0, 37.0, 37.0, 39.0, 39.0, 39.0, 40.0, 40.0, 40.0,
40.0, 42.0, 43.0, 43.0, 43.5, 44.0]
)
fish_weight = np.array(
[5.9, 32.0, 40.0, 51.5, 70.0, 100.0, 78.0, 80.0, 85.0, 85.0,
110.0, 115.0, 125.0, 130.0, 120.0, 120.0, 130.0, 135.0, 110.0,
130.0, 150.0, 145.0, 150.0, 170.0, 225.0, 145.0, 188.0, 180.0,
197.0, 218.0, 300.0, 260.0, 265.0, 250.0, 250.0, 300.0, 320.0,
514.0, 556.0, 840.0, 685.0, 700.0, 700.0, 690.0, 900.0, 650.0,
820.0, 850.0, 900.0, 1015.0, 820.0, 1100.0, 1000.0, 1100.0,
1000.0, 1000.0]
)
우선 그래프를 그려 Linear Regression model에 적합한지 확인해보겠습니다.
plt.scatter(fish_length, fish_weight, color = 'blue')
plt.show()
주어진 data를 Train_set과 Test_set으로 split해보겠습니다.
sklearn을 활용해야합니다.
random_state = 42로 설정하겠습니다.
from sklearn.model_selection import train_test_split
train_input, test_input, train_target, test_target = train_test_split(fish_length, fish_weight, test_size = 0.2, random_state = 42)
train_input의 shape을 확인해보겠습니다.
train_input.shape
-> (44,)
열에대한 정보가 없기 때문에 reshape을 통해 Train_set과 Test_set의 형태를 변경해 주어야합니다.
train_input = train_input.reshape(-1, 1)
train_target = train_target.reshape(-1, 1)
test_input = test_input.reshape(-1, 1)
test_target = test_target.reshape(-1, 1)
이제 sklearn.linear_model 모듈에서 LinearRegression을 import해 Train_set을 객체에 학습시켜보겠습니다.
from sklearn.linear_model import LinearRegression
lr = LinearRegression()
lr.fit(train_input, train_target)
학습이 완료되었습니다.
length가 50인 물고기의 몸무게를 예측해보겠습니다.
lr.predict([[50]])
-> array([[1238.3175398]])
'1238.3175398'의 무게를 가지는 것으로 확인됩니다.
학습된 model의 시각화를 위해 기울기와 y절편을 알아보겠습니다.
lr.coef_, lr.intercept_
-> [[39.05365447]] [-714.36518394]
직선 그래프를 그려 시각화 작업을 진행해봅시다.
plt.scatter(train_input, train_target, color = 'blue')
x = np.linspace(15, 60, 100)
y = lr.coef_[0] * x + lr.intercept_[0]
plt.plot(x, y, color = 'red')
plt.show()
전체적으로 직선형태에 data들이 fit하게 맞아들어가는 모습을 보이고 있습니다.
'데이터 사이언스 > 하계 AI 중급과정' 카테고리의 다른 글
Ch 5. Multiple Regression (다중 회귀) (0) | 2023.07.12 |
---|---|
Ch 4. Polynomial Regression (다항회귀) (0) | 2023.07.12 |
Ch 2. 훈련 및 테스트 세트 (Train set, Test set) (0) | 2023.07.11 |
Ch 1. ML 실습을 위한 환경 (0) | 2023.07.10 |
2. 데이터 세트 분리 (0) | 2023.06.30 |