元のページ

ステージ2-3: モデルのパラメータ調整の演習 (estimator.set_params) (情報工学実験 3 : データマイニング班)

目次

想定環境

データセットの用意

# データセット diabetes を3分割交差検定で用意
from sklearn import datasets
diabetes = datasets.load_diabetes()
data = diabetes.data
target = diabetes.target

from sklearn import cross_validation
import numpy as np
kfold = cross_validation.KFold(n=len(data), n_folds=3, shuffle=True)

# Ridge 線形回帰 (誤差関数にペナルティ項導入)
# パラメータ alpha の影響を観察してみる。
# 他のパラメータはデフォルト値のままで固定。
from sklearn import linear_model
regr = linear_model.Ridge()
alphas = np.logspace(-4, 0, 10)
scores = []
scores_std = []
for alpha in alphas:
    regr.set_params(alpha=alpha)
    this_score = cross_validation.cross_val_score(regr, data, target, cv=kfold, n_jobs=-1)
    scores.append(np.mean(this_score))
    scores_std.append(np.std(this_score))

# alpha の影響をスコア(平均値+-標準偏差)で確認してみる。
# 横軸=alpha
# 縦軸=スコア
# pl.semilogx()
#  'b--'や'b-.'はプロット時の線スタイルの指定
#  label='hoge' は凡例タイトルの指定
import pylab as pl
pl.figure()
pl.semilogx(alphas, scores, label='ave')
pl.semilogx(alphas, np.array(scores) + np.array(scores_std), 'b-.', label='ave+std')
pl.semilogx(alphas, np.array(scores) - np.array(scores_std), 'b--', label='ave-std')
pl.xlabel('Parameter alpha')
pl.ylabel('CV score')
pl.legend()
pl.show()




参考サイト一覧