欲張りスライムの備忘録

ソフトウェア関連の話題について記載する予定。「明日から本気出す」がモットー。

PyCon JP 2017チュートリアル「Pythonを用いたデータ分析入門」に参加してまいりました

このたび、PyCon JP 2017のデータ分析のチュートリアルに参加してまいりました、当日Macの電源忘れて最後の1時間程PCすら起動できなくなってしまった…欲張りスライムです。

さて!簡単ではありますが、当日の内容を備忘録として上げさせて頂きます。といっても詳細を残すのではなく、ざっくりとしたものになります。コードの説明も記載しておりません。今回公開を前提としていないチュートリアルということで、ご了承ください。

チュートリアル内容は、データサイエンティストを目指す方の導入としてちょうどよい内容だったと思います。開催時間は11:00~12:00,13:00~18:00の約6時間で、午後から参加する方もいらっしゃいました。

コードをとりあえずコピペで実行させながら学ばせていくスタイルで講義がありましたが、内容が6時間で消化しきれていなかったこともあり、やや内容を詰め込みすぎだった感はありました(自分は満足しましたが)。

 

準備

  • Python 3.5.0 以降
  • Pandas + scikit-learnの導入
  • Jupyter Notebookを利用できる環境

これは基本Anaconda入れておけば、ほぼ問題ありません。Jupyterも公式でAnaconda推奨しております。ちなみに自分はanaconda3-4.4.0(Python 3.6.1)をインストールしました。ターミナルツールはMacのデフォルトのものより、iTermが便利なのでそちらを使っております。

使用環境:macOS Sierra バージョン 10.12.6

 

Jupyter Notebookで"Helo, World!"

次の流れで、Jupyter-notebook上にコードを書いて実行させていけばOK。各ノートブックのタイトルも画面から変更できます。

  1. ターミナル上で$jupyter notebook コマンドを実行してJupyter-notebookを起動
  2. 右上の"New"から"Python [conda not]" または "Python3"を選択しノートブック画面を表示
  3. セルにコードを書いて実行

 

Python文法基礎

放送大学Python講義位の基礎レベルでした。変数・関数の扱いや順次・分岐・反復など基本を押さえた上で、下記内容を把握していればOK。

  • Pythonでは、モジュールの読み込みにimport文を使う
  • Pythonでは、シングルクォートとダブルクォートで意味は特に違わない
  • Pythonでは、複数要素をまとめて取り扱うためにリスト・タプル・ディクショナリがある
    (リスト:ミュータブル(変更可能)、タプル:イミュータブル(変更不可能)なリスト、ディクショナリ:key-valueのペア)

 

ビジネスにおけるデータ分析の流れ

印象に残ったのは、次の2点でした。

  • あるべき姿と現状の差(ギャップ)が問題となるが、メンバーによって問題が異なることがあるので、みんなの現状とあるべき姿を調査して共通認識をつくることが重要。
  • データ分析依頼者の目的(意思決定支援か自動化・最適化)によって、使うデータ分析手法も変わってくる。

 

基礎統計量による分析

確率と尤度の違いや、t検定の意味などすっかり忘れてしまっていたので、ちょうど受講して色々思い出すことができました。たしか分散でnでなくn-1で割るのが、母集団でなく標本だったよねって感じで。

以下メモ。

  • 記述統計学:全件調査を扱う/多すぎるデータを要約するための統計学

   (1) 真ん中を知る:平均値/中央値

   (2) 構成を知る:比率

   (3) ばらつきを知る:分散/標準偏差

  • 推測統計学:標本調査を扱う/一部の情報から全体を推測するための統計学

   (1) 断言が間違える確率を知る:検定

   (2) 全体の真ん中が同じ確率を知る:t検定

   (3) 全体の構成が同じ確率を知る:χ二乗検定

   (4) 全体のばらつきが同じ確率を知る:F検定

   (5) データ同士の関係の強さを知る:相関分析

   (6) 関係の強さを参考に全体に分ける:クラスタリング/因子分析/主成分分析/コレスポンデンス分析

 

Pandasの使い方

リストからSeriesの作成ができたり、リスト・Series・ディクショナリからDataFrame作成できたり、Series形式でファイルを読み込めたり、DataFrame形式でファイルを読み込めたり、基礎統計量が簡単に確認できたり、データの抽出・ソート・結合・集約・出力が簡単にできたりと…Pandasの便利さが分かりました!

 

データの可視化

MATLABみたいな感じでコードを書けたのが印象的。

対象が1変数のみで要素の数え上げを行いたい場合はヒストグラム

種類と数量の関係性を見たい場合は棒グラフを利用するといった具合に

目的によって、グラフを使い分けるのが大事みたいです。

 

データの相関と回帰

相関分析と回帰分析について学習。回帰分析は、scikit-learnという機械学習ライブラリを読み込み、モデルを構築することで実行できます。

あとは擬似相関の例が印象的でした。小学生の算数のテストが身長が高いほど点数が良かったからといって、身長とテストの間の関係に相関関係はないというもの。「擬似相関であるかどうかを社会的要素なしに識別できる手段はないのかなぁ。」とふと思いました。

 

データの分類

バッテリーが尽き、ここでコードが一切書けない状態に。。

分類とクラスタリングの違いは、正解となるデータが不可欠かどうか。分類は正解データが不可欠だが、クラスタリングは正解データがなくてよいとのことです。

 

機械学習による回帰・分類

ここの説明に入る前に終了時間が来てしまいましたので、説明は特になし。