더북(TheBook)

5.7.2 복잡도 곡선

과소적합과 과대적합에 대해 공부하면서 모델 복잡도에 따라 학습과 테스트 성능에 어떤 일이 일어나는지 시각화하는 그래프를 그렸습니다. 그래프를 그리는 코드는 이중 반복문과 그림 그리는 함수 안에 구현되어 있습니다. 샘플 곡선을 그렸던 것처럼 간단히 구현할 수 있습니다. 하지만 우리는 타수를 줄여야 하는 골프를 치는 것이 아니기 때문에 조금 길게 써 보겠습니다.

 

In [36]

num_neigh = [1,3,5,10,15,20]
KNC = neighbors.KNeighborsClassifier
tt = skms.validation_curve(KNC(), iris.data, iris.target, param_name='n_neighbors', param_range=num_neigh, cv=5)

In [37]

tidy_df = sk_graph_to_tidy(tt, num_neigh, 'k', 5)
ax = sns.lineplot(x='k', y='score', hue='set', data=tidy_df)

ax.set_title('5-fold CV Performance for k-NN')
ax.set_xlabel("\n".join(['k for k-NN', 'lower k, more complex', 'higher k, less complex']))

ax.set_ylim(.9, 1.01)
ax.set_ylabel('Accuracy');
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.