데이터 분할과 교차 검증

Cross Validation set generator

  • cross_val_scorecross_val_predict에 사전에 만든 dataset을 넣을 수 있습니다.
  • training set과 validation set의 index를 출력하는 generator를 사용하면 됩니다.
  • 발표 영상에는 없지만 해당 코드를 추가합니다.
  • 먼저, cross_val_score예시입니다.
1
2
3
4
5
6
7
8
9
10
11
# 사전에 분할한 cross validation set 사용
def generate_train_valid(idx_trains, idx_vals):
assert len(idx_trains) == len(idx_vals) # train data index와 validation data index가 다르면 중단

count = 0
while count < len(idx_trains):
count += 1
yield idx_trains[count-1], idx_vals[count-1]

idx_cv = generate_train_valid(idx_trains, idx_vals) # CV set generator
-cross_val_score(model1, X, y, cv=idx_cv, scoring="neg_root_mean_squared_error")
  • 실행 결과
1
2
array([290.47491999, 332.31676581, 268.35748775, 304.48637819,
262.42934634])
  • cross_val_predict예시입니다.
1
2
3
4
5
6
7
8
9
10
11
12
from sklearn.model_selection import cross_val_predict

# y_pred_cv = cross_val_predict(model1, X, y, cv=5)
idx_cv = generate_train_valid(idx_trains, idx_vals) # CV set generator
y_pred_cv = cross_val_predict(model1, X, y, cv=idx_cv)

# visualization and print
fig, ax = plt.subplots(figsize=(5, 5), constrained_layout=True)
ax.scatter(y, y_pred_cv, c="gray", alpha=0.5)
ax.set_xlabel("true", color="gray", labelpad=12)
ax.set_ylabel("predict", color="gray", labelpad=12)
mean_squared_error(y, y_pred_cv, squared=False)
  • 실행 결과
1
292.76401468664585


* 바쁜 연구원 일정 속에 변동이 있겠지만, 최대한 일정을 지켜보고자 합니다.

학습조직 일정


도움이 되셨나요? 카페인을 투입하시면 다음 포스팅으로 변환됩니다

Share