蒲田でやってるオープンデベロッパーズカンファレンスに来ました。

お話聞きながら、ライブ記事作成してみます。

2017/12/21追記 発表スライドはこちらです → https://speakerdeck.com/terapyon/python-ji-jie-xue-xi-kotohazime-at-odc

 お題「Python機械学習ことはじめ」

千葉市のインフルエンザ報告数と、気温から流行を予測する

手順

  1. データ選び、データ入手 〜〜〜 ネタ探し
  2. データ加工、データ連結 〜〜〜 使いやすく加工する
  3. 可視化 〜〜〜 なんとなく何かが見えてくる。どんなアルゴリズム使おうかなー。
  4. アルゴリズム選定
  5. 機械学習モデル選定
  6. 機械学習モデル評価

データ選び、データ入手

千葉市と気象庁からいただきー。

データ加工

  • 文字コードとか
  • 欠損している部分を補ったり

 可視化

* グラフにしてみたり
* 相関見えてくる?
* 使う特徴量を決める

 アルゴリズム選定

* ディープラーニングで特徴量全部がっつり?
* 場合によってデータ再加工
* 次元数作成???
* 説明変数と目的変数を決める

 機械学習モデル選択

ここまでくれば簡単
すぐすんじゃう

 機械学習モデル評価

* 予測
* 予測結果を評価
* 交差検証とか
* モデルにフィットしすぎて過学習になってないかとか

さあ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だった?
分割をやり直して計算し直すのを繰り返す

 グリッドサーチ(パラメータ調整)

(というところで、時間切れ