더북(TheBook)

learning_curve는 훈련 세트 크기의 개수와 CV 폴드의 개수로 된 2차원 배열을 반환합니다. 이를 (percents, folds)라고 하겠습니다. 아쉽게도 앞의 표처럼 이 값들을 그래프로 표현하자면 조금 머리가 아픕니다.

mlwpy.py에서 불러온 np_cartesian_product 함수를 이용해서 표에 담긴 값을 훈련 세트 크기, 세트 구분, 폴드, 점수로 구성된 데이터프레임으로 정리합니다. Seaborn의 lineplot을 이용하면 데이터프레임을 그래프로 쉽게 표현할 수 있습니다.

 

In [34]

neat_sizes = (train_sizes*100).astype(np.int)
labels = np_cartesian_product(neat_sizes, [0,1], np.arange(5))
score = np.concatenate([train_scores.flatten(), test_scores.flatten()], axis=0)
assert len(score) == len(labels)

df = pd.DataFrame.from_records(labels)
df.columns = ['pct', 'set', 'fold']
df.set = df.set.replace({0:'Train', 1:'Test'})
df['score'] = score

In [35]

ax = sns.lineplot(x='pct', y='score', hue='set', data=df)

ax.set_title("Learning Curve for 5-NN Classifier")
ax.set_xlabel("Percent of Data used for Training")
ax.set_ylabel("Accuracy");
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.