한국경제신문(toss bank)

데이터 세트 분리, 모델 학습(fit), 예측 수행(predict), 평가(evaluate)

다시초심으로 2024. 7. 31. 16:50

데이터 세트 분리 

데이터를 학습 데이터(train), 테스트 데이터로 분리한다.

왜? --> 전체 데이터 세트를 머신러닝 모델에 훈련시키고 다시 데이터에 예측을 시키면 어떻게 될까.
머신러닝 모델은 그 데이터를 이미 훈련 받았기 때문에 데이터에 대해 알고 있습니다.

그렇기 때문에 데이터 세트를 훈련 데이터 세트 / 테스트 데이터 세트 2개로 나누어서 해야됩니다.

나온 로직을 가지고 테스트 데이터 세트를 예측합니다.

이렇게 데이터 세트를 나누어서 해야 훈련받은 머신러닝 모델의 성능을 알 수 있습니다. 

모델 학습 ( fit )

학습 데이터 ( X_train,y_train ) 를 기반으로 머신러닝 알고리즘을 적용해 모델을 학습 시킨다.

 

예측 수행 ( predict )

학습된 머신러닝 모델을 이용해 테스트 데이터로 예측합니다.

훈련 시켜서 나온 로직을 가지고 
테스트 데이터 세트(X_test) 를 예측해서 나온 값과 실제 값인 y_test와 비교합니다.

쉽게 말해서, 머신러닝 모델이 X_train을 보고 결과값인 y_train을 보고 훈련에 들어갑니다. ( fit)
훈련을 받으면 데이터와 결과값을 보고 머신러닝이 그에대한 로직을 예측하게됩니다.

그렇게 훈련 끝에 나온 로직을 가지고
머신러닝 모델이 X_test를 봤을때 결과로 pred라는게 나올거다~ 라고 하면 그때 y_test와 비교해서 
예측 성공률을 확인 하는것 입니다.

from sklearn.tree import DecisionTreeClassifider #결정트리
from sklearn.metrics import accuracy_score # 정확도 구하기 

dt_clf = DecisionTreeClassfier()

dt_clf.fit(X_train, y_train)   # X_train, y_train을 결정트리분류기로 학습시킨다.

pred = dt_clf.predict(X_test)  # X_train, y_train을 훈련 받은걸 X_test를 예측해서 pred에 넣는다.

acc_result = accuracy_score(y_test, pred) #예측한 pred를 y_test와 비교해서 acc_result에 넣는다.

print("예측 스코어 : {:.4f}".format(acc_result)

평가 ( evaluate )

예측된 결과값과 테스트 데이터 ( test ) 의 실제 결과값을 비교해 머신러닝 모델 성능을 평가합니다.