본문 바로가기
데이터 사이언스/하계 AI 중급과정

2. 데이터 세트 분리

by 수학과인데 공대생 2023. 6. 30.
728x90

데이터 세트 분리는 말 그대로 데이터를 분리하는 것이다.

2개의 데이터로 분리할 수 있는데

하나는 train데이터, 나머지 하나는 test데이터이다.

 

train데이터는 말 그대로 훈련 데이터인데, 우리가 학습을 할 때 사용할 데이터이다.

test데이터는 말 그대로 모델의 성능을 테스트 하는 데이터인데, train데이터를 통해 학습된 모델의 성능을 테스트 하는 데이터이다.

 

여기서 주의 할 점은 train데이터로 모델 학습을 진행하기 때문에 train데이터test데이터 보다 중요하다고 생각할 수 있다. 그러나 학습에 사용되지 않은 test데이터의 척도가 모델의 성능을 평가하기 때문에 중요한 것은

train데이터로 학습된 모델이 test데이터를 얼마나 잘 맞추는가 이다.

 

일반적으로 데이터가 주어지면 8:2의 비율로 train데이터test데이터를 나눈다.

 

 

지난번 포스팅에서 살펴본 공부 시간에 따른 시험 점수를 예제로 살펴보자.

cf) https://math-love.tistory.com/8

 

1. Linear Regression (선형 회귀)

머신러닝의 목적은 데이터의 알려진 속성들을 학습하여 예측 모델을 만드는데 있다. 이때 잘 찾아 낼 수 있는 가장 직관적이고 간단한 모델은 선(line)이다. 즉, 선형 회귀는 정돈된 데이터들을

math-love.tistory.com

 

 

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=0) # 훈련 80 : 테스트 20 으로 분리

주어진 데이터를 Train setTest set으로 분리하기 위한 코드이다.

sklearn.model_selection에서 train_test_split 를 import하고

독립변수의 Train set, Test set

종속변수의 Train set, Test set 을 나눠준다.

test_size 를 0.2로 지정하면 train_size 는 자동으로 0.8의 크기를 가진다.

(random_state=0 -> 일정한 값으로 표현하기 위함.)

 

 

이제 Train setTest set 으로 분리를 마쳤으니 모델링 작업을 진행한다.

그리고 train데이터를 통해 학습된 모델이 test데이터를 얼마나 잘 표현하는지 평가해보자.

from sklearn.linear_model import LinearRegression
reg = LinearRegression()
reg.fit(X_train,y_train)

Train set으로 reg를 학습시킨다.

 

Train set으로 학습된 모델과 실제 값을 시각화하자.

plt.scatter(X_train, y_train, color = 'blue') # 실제값
plt.plot(X_train, reg.predict(X_train), color = 'green') # Train set model
plt.title('Score by hours (train data)') # 제목
plt.xlabel('hours') # X 축 이름
plt.ylabel('score') # Y 축 이름
plt.show()

 

우리가 살펴봐야할 것은 'Train set으로 학습한 모델이 얼마나 Test set을 잘 표현하는가?' 이다.

산점도 그래프를 Test set에 대해 나타내보자.

 

plt.scatter(X_test, y_test, color='blue') # 산점도
plt.plot(X_train, reg.predict(X_train), color='green') # 선 그래프
plt.title('Score by hours (test data)') # 제목
plt.xlabel('hours') # X 축 이름
plt.ylabel('score') # Y 축 이름
plt.show()

다행스럽게도 이 모델은 Test set을 잘표현 하고 있는 것으로 보인다.

 

728x90