Python機械学習ことはじめ
蒲田でやってるオープンデベロッパーズカンファレンスに来ました。
お話聞きながら、ライブ記事作成してみます。
2017/12/21追記 発表スライドはこちらです → https://speakerdeck.com/terapyon/python-ji-jie-xue-xi-kotohazime-at-odc
お題「Python機械学習ことはじめ」
千葉市のインフルエンザ報告数と、気温から流行を予測する
手順
- データ選び、データ入手 〜〜〜 ネタ探し
- データ加工、データ連結 〜〜〜 使いやすく加工する
- 可視化 〜〜〜 なんとなく何かが見えてくる。どんなアルゴリズム使おうかなー。
- アルゴリズム選定
- 機械学習モデル選定
- 機械学習モデル評価
データ選び、データ入手
千葉市と気象庁からいただきー。
データ加工
- 文字コードとか
- 欠損している部分を補ったり
可視化
* グラフにしてみたり
* 相関見えてくる?
* 使う特徴量を決める
アルゴリズム選定
* ディープラーニングで特徴量全部がっつり?
* 場合によってデータ再加工
* 次元数作成???
* 説明変数と目的変数を決める
機械学習モデル選択
ここまでくれば簡単
すぐすんじゃう
機械学習モデル評価
* 予測
* 予測結果を評価
* 交差検証とか
* モデルにフィットしすぎて過学習になってないかとか
さあPython
Jupyter notebook 使う
[Shift]-[Enter]で実行してくれる
便利
githubにもそのまま公開できる
Pandasでデータ眺める
いけてないCSV読み込んで、なんとなく加工できちゃう
データフレーム機能を駆使
日付でインデックスつけとけば、週単位のデータと日単位のデータの連結もコマンド一発
シリアライズ化
ここが一番時間かかってたいへん
matplotlibで可視化
日本語入っているとうまくいかない
pandasからmatplotlib使ってヒストグラム簡単に出したり
「流行」とは何かを定義したり
pandasで、多変数うんたらを一気に可視化
左下から右上にまっすぐ上がるグラフは相関1
アルゴリズムの候補を検討
- ロジスティック回帰
とか
scilit-learn使って学習データとテストデータを分割
説明変数x
目的変数y 流行っている1 流行ってない0
過学習を避けるため、テストデータを取っておく。80%を学習に、20%をテスト
割合は、モデルやデータ量による
アルゴリズム初期化
scilit-learnを使う
予測 clf.predict(X_val)
だいたい当たるので、混同行列を使う
真陽性 偽陽性
真陰性 偽陰性
交差検証
学習とテストの割合はOKだった?
分割をやり直して計算し直すのを繰り返す
グリッドサーチ(パラメータ調整)
(というところで、時間切れ