학습데이터와 테스트 데이터 나누기

괴도소녀·2021년 7월 12일
0

Machine Learning

목록 보기
6/10

앞선 포스팅에서 accuracy가 100% 나온 것을 기억할 것이다.
예측을 사용할 시 새로운 데이터를 넣어야 하는데, 동일한 데이터로 훈련과 예측을 하니 정확도가 100%가 나오는 것이다.
이럴 때는 train dataset, test dataset을 분류해줘서 학습시키면 문제가 해결된다.
문제 해결이라기 보단 분리는 필수적으로 해줘야한다.
scikit-learn에서는 이 필수 기능을 당연히 API로 제공하고 있으며, model_selectiontrain_test_split()함수이다.

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=42)

train_test_split는

  • feature matrics for train,
  • feature matrics for test data
  • target vector for train data
  • target vector for test data

위 4개를 묶어서 반환 해주며, unpacking해서 쓴다.

이제 train data, test data를 나눈 것을 적용해서 학습을 시키고 예측을 해보고 accuracy체크를 해보자.

from sklearn.datasets import load_wine
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score

# 데이터셋 로드하기
data = load_wine()

# 훈련용 데이터셋 나누기
X_train, X_test, y_train, y_test = train_test_split(data.data, data.target, test_size=0.2, random_state=5)

# 훈련하기
model = RandomForestClassifier()
model.fit(X_train, y_train)

# 예측하기
y_predict = model.predict(X_test)

# 정답률 출력하기
print("accuracy=", accuracy_score(y_test, y_predict))

------------------------------------------------------

accuracy= 0.9722222222222222

0개의 댓글