더북(TheBook)
>>> weights, params = [], []
>>> for c in np.arange(-5, 5):
...     lr = LogisticRegression(C=10.**c,
...                             multi_class='ovr')
...     lr.fit(X_train_std, y_train)
...     weights.append(lr.coef_[1])
...     params.append(10.**c)
>>> weights = np.array(weights)
>>> plt.plot(params, weights[:, 0],
...          label='Petal length')
>>> plt.plot(params, weights[:, 1], linestyle='--',
...          label='Petal width')
>>> plt.ylabel('Weight coefficient')
>>> plt.xlabel('C')
>>> plt.legend(loc='upper left')
>>> plt.xscale('log')
>>> plt.show()

이 코드를 실행하면 역 규제 매개변수 C의 값을 바꾸면서 열 개의 로지스틱 회귀 모델을 훈련합니다. 시연을 위해 모든 분류기에서 클래스 1의 가중치 값만 사용합니다(여기에서는 데이터셋에 있는 두 번째 클래스인 Iris-versicolor). 다중 분류에는 OvR 기법을 사용합니다.15

결과 그래프에서 볼 수 있듯이 C 매개변수가 감소하면 가중치 절댓값이 줄어듭니다. 즉, 규제 강도가 증가합니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.