- 사이킷런 라이브러리 : 머신러닝 모델 구현 뿐만 아니라 예시 데이터 셋, 데이터 전처리, 세부 조정, 모델 평가등과 같은 유용한 기능들을 제공
데이터 준비를 위한 사이킷런 함수/라이브러리
- from sklearn.model_selection import train_test_split : 학습용 데이터와 테스트용 데이터를 나누어주는 기능을 불러옵니다.
- train_test_split(X, y, test_size=0.3, random_state=0) : 데이터의 70%를 학습에 사용하고, 나머지 30%의 데이터를 테스트용 데이터로 나눈 결과 데이터를 반환합니다.
단순 선형 회귀를 위한 사이킷런 함수/라이브러리
- from sklearn.linear_model import LinearRegression : 단순 선형 회귀 모델을 불러옵니다.
- LinearRegression() : 모델을 정의합니다.
- [Model].fit(X, y) : X, y 데이터셋에 대해서 모델을 학습시킵니다.
- [Model].predict(X) : X 데이터에 대한 예측값을 반환합니다.
- [Model].score(X, y) : 테스트 데이터를 인자로 받아 학습이 완료된 모델의 평가 점수를 출력합니다.
- [Model].intercept_ : 학습이 완료된 모델의 베타0를 반환합니다.
- [Model].coef_ : 학습이 완료된 모델의 베타1를 반환합니다.
import matplotlib.pyplot as plt
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
def load_data():
#동일한 데이터가 생성될 수 있도록 0값을 넣어주자.
np.random.seed(0)
X = 5*np.random.rand(100,1)
y = 3*X + 5*np.random.rand(100,1)
# 순서가 중요!!! train,train,test,test
train_X, test_X, train_y, test_y = train_test_split(X,y,test_size=0.3, random_state = 0)
return train_X, test_X, train_y, test_y
def regression_model(train_X, train_y):
simplelinear = LinearRegression()
simplelinear.fit(train_X, train_y)
return simplelinear
# 그래프를 시각화하는 함수
def plotting_graph(train_X, test_X, train_y, test_y, predicted):
fig, ax = plt.subplots(1,2, figsize=(16, 7))
ax[0].scatter(train_X,train_y)
ax[1].scatter(test_X,test_y)
ax[1].plot(test_X, predicted, color='b')
ax[0].set_xlabel('train_X')
ax[0].set_ylabel('train_y')
ax[1].set_xlabel('test_X')
ax[1].set_ylabel('test_y')
fig.savefig("result.png")
elice_utils.send_image("result.png")
def main():
train_X, test_X, train_y, test_y = load_data()
simplelinear = regression_model(train_X, train_y)
predicted = simplelinear.predict(test_X)
# score함수 내에서 test_X에 대한 predicted를 알아서 값을 구함. 따라서 test_y를 파라미터로 넣어줌으로써 predicted와 test_y를 비교해 점수를 구하는 함수
model_score = simplelinear.score(test_X, test_y)
beta_0 = simplelinear.intercept_
beta_1 = simplelinear.coef_
print("> beta_0 : ",beta_0)
print("> beta_1 : ",beta_1)
print("> 모델 평가 점수 :", model_score)
# 시각화 함수 호출하기
plotting_graph(train_X, test_X, train_y, test_y, predicted)
return predicted, beta_0, beta_1, model_score
if __name__=="__main__":
main()
반응형