>>> 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 매개변수가 감소하면 가중치 절댓값이 줄어듭니다. 즉, 규제 강도가 증가합니다.