scikit-learnメモ

GridSearchCV,RandomizedSearchCVのverboseオプション

ドキュメントには単に"Verbosity level."や"Controls the verbosity: the higher, the more messages."としか記載されておらず闇っぽい。

verbose=1では一定の間隔でログを表示,verbose=2ではテスト毎にログを表示,verbose=3ではテスト毎にスコアも含めてログを表示するようなので,私は1か3にすることが多い。

カテゴリ素性を含むpandas.DataFrameをnumpy行列に変換する

1. DictVectorizerを使う

追加のパッケージは不要だけど,一度Pythonの辞書に変換しているので効率が悪そうな気がしなくもない。

stackoverflow.com fastml.com

2. sklearn-pandasを使う

github.com

変換した後のデータの各次元が,もともとは何という属性であったか調べる方法が分からない。DictVectorizerではvocabulary_feature_names_で取れる。

LinearSVC,LinearSVRのdualオプション

"A practical guide to support vector classification" にも書いてあることだけれど,n_samples > n_featuresの場合にはdual=Falseにするとかなり学習が速くなる。

データの分割,シャッフル

scikit-learn以外の機械学習ライブラリのために使う時に便利

from sklearn.cross_validation import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=1.0 / split)

from sklearn.utils import shuffle
X_train, y_train = shuffle(X_train, y_train)

↓ここからscikit-learn関係なし

matplotlibで色を適当に変える

stackoverflow.com

Python一般

いい加減にPython3に移行しても良さそうなのだけれど,Python2で書かなければならない場合も,移行の際のハマりどころを減らすために以下のような条件で書くことにする。

# coding: utf_8
from __future__ import division, print_function, unicode_literals
from future_builtins import *

追記

できるだけPython3に移行しよう!

blog.amedama.jp