
146
7
章 回帰:レコメンド
ある
fit()
と
map()
が用意されています。それらを用いて、学習と予測を行います。
lr.fit(x,y)
p = map(lr.predict, x)
e = p-y
total_error = np.sum(e*e) #
誤差の二乗和
rmse_train = np.sqrt(total_error/len(p))
print('RMSE on training: {}'.format(rmse_train))
ここでは訓練データのRMSEを別の方法で求めました。もちろん、結果は前と同じ4.6になります
(このように結果が正しいか適宜確認することはとても良い習慣です)。
続いて、
KFold
クラスを用いて10分割の交差検定を行い、線形回帰の汎化に対する能力について
評価を行います。
from sklearn.cross_validation import Kfold
kf = KFold(len(x), n_
folds=10)
err = 0
for train,test in kf:
lr.fit(x[train],y[train])
p = map(lr.predict, x[test])
e = p-y[test]
err += np.sum(e*e)
rmse_10cv = np.sqrt(err/len(x))
print('RMSE on 10-fold CV: {}'.format(rmse_10cv))
交差検定を用いることで、より慎重な評価を行ったことになり