最近もっぱら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%くらいの精度ということでいいのかな。あんまり高くないですね。