데이터 분할과 교차 검증

  • 한국에너지기술연구원 AI 학습조직에서는 2022년 한 해동안 머신러닝을 공부하고 있습니다.

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