- 한국에너지기술연구원 AI 학습조직에서는 2022년 한 해동안 머신러닝을 공부하고 있습니다.
- scikit-learn 기능 중 데이터를 class 비율대로 분류하는 stratified K fold를 소개하고,
- 모든 데이터를 학습과 검증에 활용하는 cross validation을 다룹니다.
- 강의 자료는 여기에서 다운받으실 수 있습니다
발표 영상 : (Youtube Link)
실습 코드 : (https://bit.ly/3QdGwGq)
Cross Validation set generator
cross_val_score
와cross_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
2array([290.47491999, 332.31676581, 268.35748775, 304.48637819,
262.42934634])cross_val_predict
예시입니다.1
2
3
4
5
6
7
8
9
10
11
12from 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
* 바쁜 연구원 일정 속에 변동이 있겠지만, 최대한 일정을 지켜보고자 합니다.