본문 바로가기
프로그래밍/파이썬

파이썬 kaggle 머신러닝 입문 4~7/7

by 훨훨날아 2021. 5. 26.

4 Model validation 모델검증하기

제작한 머신러닝 모델의 정확도를 측정하기 위해 실제값고 예측값을 비교하여 정확도를 파악해야한다.

오차 = 실제값 - 예측값

평균오차절대값(mean absolute error, MAE) 

.metrics에 있는 mean_absoulte_error함수를 실제값 y와 트레이닝데이터 X를 통해서 구해진 예측값을 비교한다.

from sklearn.metrics import mean_absolute_error

predicted_home_prices = melbourne_model.predict(X)
mean_absolute_error(y, predicted_home_prices)

 

예측값을 검증하기 위해서 데이터를 training과 validation 데이터로 나눈다음 트레이닝시키고 검증과정을 진행한다.

from sklearn.model_selection import train_test_split

train_X, val_X, train_y, val_y = train_test_split(X, y, random_state = 0)

# Define model
melbourne_model = DecisionTreeRegressor()

# Fit model
melbourne_model.fit(train_X, train_y)

# get predicted prices on validation data
val_predictions = melbourne_model.predict(val_X)
print(mean_absolute_error(val_y, val_predictions))

 

예측모델의 결과는 데이터의 특징마다 달라질 수 있기 때문에 훈련시키는 특징이나 모델을 변경시키면서 가장 좋은 예측모델을 만들어야한다.

 

5. Underfitting and Overfitting 과소적합과 과적합

 

과소적합은 적은수의 너무 일반적인 특징을 기준으로 만들어져 모든데이터에 어느정도 맞지만 예측정확도가 떨어진다. 하지만 과적합은 현재 데이터의 특징에 알맞게 트레이닝되어 예측정확도가 높지만 다른 데이터를 이용할 때는 예측정확도가 떨어지게된다.

과소적합과 과적합을 고려하여 오차가 최소가되는 지점을 설정해야한다. (decision tree에서는 가지의 갯수와 깊이의 숫자를 고려변경해서 최적화 시킬 수 있다)

from sklearn.metrics import mean_absolute_error
from sklearn.tree import DecisionTreeRegressor

def get_mae(max_leaf_nodes, train_X, val_X, train_y, val_y):
    model = DecisionTreeRegressor(max_leaf_nodes=max_leaf_nodes, random_state=0)
    model.fit(train_X, train_y)
    preds_val = model.predict(val_X)
    mae = mean_absolute_error(val_y, preds_val)
    return(mae)

 

# compare MAE with differing values of max_leaf_nodes
for max_leaf_nodes in [5, 50, 500, 5000]:
    my_mae = get_mae(max_leaf_nodes, train_X, val_X, train_y, val_y)
    print("Max leaf nodes: %d  \t\t Mean Absolute Error:  %d" %(max_leaf_nodes, my_mae))

 

6. Random forest tree 랜덤포레스트트리 모델

과소적합과 과적합을 해결하기 위해 다양한 모델이 연구되고 있다. 포레스트트리 모델에서는 랜덤포레스트 트리가 하나의 방법으로 많이 사용된다. 데이터 안에 가지를 만드는 두드려진 특징값이 있으면 결과값이 한쪽으로 치우치게된다. 그래서 기준이 되는 특징값들을 랜덤하게 설정해줌으로서 최적화되는 모델이다.

다른 모델과 마찮가지로 모델을 불러와서 데이터를 fit 시키면된다.

 

from sklearn.ensemble import RandomForestRegressor
from sklearn.metrics import mean_absolute_error

forest_model = RandomForestRegressor(random_state=1)
forest_model.fit(train_X, train_y)
melb_preds = forest_model.predict(val_X)
print(mean_absolute_error(val_y, melb_preds))

 

 

 

 

 

참고

https://www.kaggle.com/dansbecker/model-validation

 

Model Validation

Explore and run machine learning code with Kaggle Notebooks | Using data from multiple data sources

www.kaggle.com

https://www.kaggle.com/dansbecker/underfitting-and-overfitting

 

Underfitting and Overfitting

Explore and run machine learning code with Kaggle Notebooks | Using data from multiple data sources

www.kaggle.com

https://www.kaggle.com/dansbecker/random-forests

 

Random Forests

Explore and run machine learning code with Kaggle Notebooks | Using data from multiple data sources

www.kaggle.com

 

반응형

'프로그래밍 > 파이썬' 카테고리의 다른 글

파이썬공부 [점프투파이썬]  (0) 2021.05.27
파이썬 알고리즘 인터뷰 (03-05)  (1) 2021.05.26
코드업 6097 설탕과자 뽑기  (0) 2021.05.24
코드업 6090 수 나열하기  (0) 2021.05.22
코드업 6083 문제 풀이  (0) 2021.05.22