みらいテックラボ

音声・画像認識や機械学習など, 週末プログラマである管理人が興味のある技術の紹介や実際にトライしてみた様子などメモしていく.

「東京大学のデータサイエンティスト育成講座 ~Pythonで手を動かして学ぶデータ分析~」の紹介

いくつかのデータ分析の入門書などで, データ分析の基礎的なところは理解しているつもりなので, 少し物足りないかもしれないとは思いつつも, 東京大学のオフライン講義をベースにした本ということで読んでみることにした.

  目 次
Chapter 1 本書の概要とPythonの基礎
Chapter 2 科学計算、データ加工、グラフ描画ライブラリの使い方の基礎
Chapter 3 記述統計と単回帰分析
Chapter 4 確率と統計の基礎
Chapter 5 Pythonによる科学計算(NumpyとScipy)
Chapter 6 Pandasを使ったデータ加工処理
Chapter 7 Matplotlibを使ったデータ可視化
Chapter 8 機械学習の基礎(教師あり学習)
Chapter 9 機械学習の基礎(教師なし学習)
Chapter 10 モデルの検証方法とチューニング方法
Chapter 11 総合演習問題

初学者向けの本ということで内容はそれほど深くないが, Numpy, Scipy, Pandas, Matplotlibなどの基本的な使い方から機械学習の基礎的な内容までカバーされており, 全体的によくまとまっている感じ.
また, 各Chapterでは実際に手を動かして確認しつつ読めたり, 練習問題や総合演習問題及びその解答もしっかり記されており, 理解度を確認する上で多い役立つように思う.
それから, 個々の内容についてより深く勉強するための参考文献がしっかり紹介されている点もよいと思う.

ただ, 出力結果の桁数違い("%precision 3"を設定している反映されていない)があまりなどの誤りが多い, 複数の著者の方が書かれているため, コーディングスタイルがChapterによって異なる, など少し残念な点もある.

この手のデータ分析入門の書籍としては, これまで「Pythonによるデータ分析入門」(Wes McKinney著, オライリー)がいいと思っていたが, この本を読み終えた今では初学者にはこの本の方をお薦めしたい.

最後に, 初版 第4刷の正誤表(気付いたもののみ)を載せておく.
正誤表:

ページ
p.42 2-2-4から6行目「[行範囲:列範囲]」のように「[行範囲, 列範囲]」のように
p.42 2-2-4から6, 7行目「開始インデックス, 終了インデックス」のように, カンマで区切って「開始インデックス:終了インデックス」のように, コロンで区切って
p.71 最初の出力mkdir: chap3: File exists(出力なし, 左のように出力されるのは, すでにchap3が存在する場合)
p.72 中段の出力chap3/ student-mat.csv student-merge.R student-por.csv student.txt win_data.csvstduent-mat.csv student-merge.R student-por.csv student.txt
p.81 2つ目の出力8.0030956871081778.003
p.82 1つ目の出力8.08.000
p.83 右側の出力, p.84 最初の出力(外れ値がプロットされている図)(外れ値がプロットされていない図)
p.87 1つ目の出力(0.8014679320174141, 9,001430312276602e-90)(0.801, 0.000)
p.91 下の出力切片:-1.6528038288004616切片:[-1.653]
p.99 下の入力の2行目calc_steps = 1,000calc_steps = 1000
p.104 入力のforループ内prob_data = np.append(prob_data, len(dice_rolls[dice_rolls==i]) / calc_steps)prob_data = np.append(prob_data, p) (コメント:上の行でpで計算済なので...)
p.106 4-3-2-5の3行目あの区間で事象が発生するとある区間で事象が発生すると
p.141 下から2行目正になるようにするもおのです。正になるようにするものです。
.p328 練習問題4-2 \frac{1}{1110} \frac{11}{1110}
p.341 練習問題6-1の入力hier_data_frame1['Kyoto']hier_df1['Kyoto']
p.342 練習問題6-2の入力hier_data_frame1.mean(level='city', axis=1)hier_df1.mean(level='city', axis=1)
p.342 練習問題6-3の入力hier_data_frame1.sum(level='key2')hier_df1.sum(level='key2')
注) 出力結果の桁数誤りについては, 他にもあったかも...

----