yoooniverse

[kaggle] Learn Tutorial_Intro to Machine Learning (정리)_1 본문

KAGGLE/Intro to Machine Learning

[kaggle] Learn Tutorial_Intro to Machine Learning (정리)_1

Ykl 2022. 11. 3. 19:10

< Model Validation >

the relevant measure of model quality: predictive accuracy

(which means, will the model's predictions be close to what actually happens?)

 

(1) First, need to summarize the model quality in an understandable way.

     We need to summarize this into a single metric.

 

여기서 사용할 metric :

Mean Absolute Error (also called MAE)

MAE의 원리

  1. prediction error for each house: error = actual − predicted
  2. take the absolute value of each error
  3. take the average of those absolute errors

sci-kit learn 라이브러리를 이용한 MAE 계산

from sklearn.metrics import mean_absolute_error

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

변수 predicted_home_prices에 input data를 넣은 prediction 결과를 저장(리스트 형식)

mean_absolute_error의 인자: y 👈 actual, predicted_home_prices 👈 predicted

 


< Validation Data >

: use those to test the model's accuracy on data it hasn't seen before.

 

The Problem with "In-Sample" Scores

모델이 pattern을 학습할 때 사용했던 data로 prediction 결과물의 정확도를 판단하는 것의 문제점

: 잘못된 pattern을 학습할 가능성이 있음.

ex_ training data에서만 나타나는 pattern이 학습된 경우, 다른 데이터를 가지고 prediction 결과물을 냈을 때 model은 inaccurate 한 것으로 보여질 것이다.

 

👉 따라서 모델이 학습 시 보지 못했던 데이터로 model validation을 진행해야 한다.


training에 쓸 데이터, validation에 쓸 데이터 구분하기

(역시 sci-kit learn 라이브러리를 활용)

from sklearn.model_selection import train_test_split

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

melbourne_model = DecisionTreeRegressor()
melbourne_model.fit(train_X, train_y)

val_predictions = melbourne_model.predict(val_X)
print(mean_absolute_error(val_y, val_predictions))

train_test_split(): 모델을 생성하고 학습시키기 전, 데이터를 training용, validation용으로 나눠준다

model을 fit하는 과정에는 train_X, train_y

model을 이용해 prediction을 만들고 그 정확도를 평가하는 과정에는 val_X, val_y 데이터를 사용하는 것.

 


🐧 validation data를 적용한 여기까지의 코드 전문

import pandas as pd
melbourne_file_path = '파일 경로 삽입'
melbourne_data = pd.read_csv(melbourne_file_path)
melbourne_data.describe()

melbourne_data = melbourne_data.dropna(axis=0) #axis=0 : 행 제거, axis=0 : 열 제거

y = melbourne_data.Price

melbourne_features = ['Rooms', 'Bathroom', 'Landsize', 'Lattitude', 'Longtitude']
X = melbourne_data[melbourne_features]
X.describe()
X.head()	#데이터 테이블의 맨 앞 5줄만 뽑아서 보여줌


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

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

melbourne_model = DecisionTreeRegressor(random_state=1)
melbourne_model.fit(train_X, train_y)

val_predictions = melbourne_model.predict(val_X)

#val_y 값과 Prediction 값을 비교해 MAE를 계산한다.
mae = mean_absolute_error(val_Y, val_predictions)

print(val_predictions[:5])
print(val_y[:5])
print(mae)
Comments