scikit-learnを使って線形回帰モデルをクロスバリデーションする

最近もっぱらscikit-learnをいじっているのですが、クロスバリデーションってどうやるんだろうと思い調べてました。

非常にシンプルな例ですが、sckit-learnに付属しているテストデータを使って実際にやってみます。ちなみにpython2.7.10を使ってます。scikit-learnはpipでインストールするなりしてくだしあ。

main.py

# -*- coding: utf-8 -
from sklearn import cross_validation
from sklearn import datasets
from sklearn import linear_model

# ボストンの家の部屋数と、家の価格データ(詳しくは公式参照)
# http://scikit-learn.org/stable/modules/generated/sklearn.datasets.load_boston.html#sklearn.datasets.load_boston
boston = datasets.load_boston()

# train_test_splitを使うと簡単にトレーニングセットとテストセットを分割出来る
X_train, X_test, y_train, y_test = cross_validation.train_test_split(
    boston.data, boston.target, test_size=0.4, random_state=0)

# 学習させる
regr = linear_model.LinearRegression()
regr.fit(X_train, y_train)

# クロスバリデーションを実行
print regr.score(X_test, y_test)
$ python main.py
0.688178486968

68%くらいの精度ということでいいのかな。あんまり高くないですね。



mofmof inc.では、一緒に仕事をしてくださるエンジニアを募集しております。
募集要項については以下をご確認ください。
興味を持っていただけましたら、ぜひ一度ゆっくりお話出来れば嬉しいです。

募集一覧(wantedly)
https://www.wantedly.com/companies/mof-mof/projects

mofmofは何をしたいのか
https://www.mof-mof.co.jp/recruit/want-to-do

mofmof入社ガイド
http://everyday.mof-mof.co.jp/entry/2017/01/25/141201