chakokuのブログ(rev4)

テック・コミック・DTM・・・ごくまれにチャリ

統計学を学ぶ。pythonも活用しつつ。。。

機械学習の基礎は統計とか確率論と理解していますが、どっちもよく分かっていない。今更ながら、ぼちぼち勉強しようと思って自力でなんとか理解できると思われるレベルの統計学の入門書(「はじめての統計学」)を買った。

教科書には演習問題がたくさん掲載されていて、グラフを書いてみろとかの設問もある。データ解析の勉強のため、ちょうどiPython Notebookを動かしてるところなので、matplotlibを使ってヒストグラムを書いてみた。(教科書P9、設問1.2)



ご参考に、以下がヒストグラムを描画するpythonのソース


import matplotlib.pyplot as plt
val={0:5,10:35,20:25,30:20,40:10,50:3,60:2}
print "+-----+-----+"
print "|Range|Value|"
print "+-----+-----+"
for key in x_values:
print "|%02d-%02d| %02d |" % (key,key+10,val[key])
print "+-----+-----+"
x_values=sort(val.keys())
y_values=[val[x] for x in x_values]
plt.bar(x_values,y_values,width=10)
plt.xlim([0,60])
plt.ylim([0,40])
plt.show()
演習も手を動かしながら計算すべきと思って、電卓も買った。教科書を読みながら、グラフを書いたり、電卓で平均とか偏差とか計算することで最低の知識が身につくことを期待。。
自分が買った本
はじめての統計学

はじめての統計学

■補足
データ解析を行うのに、フリー版Matlabとの位置づけであるScilabを勉強しようと思っていた。だけど、iPython Notebookを知って、これはPython版のScilabなのでは?と思えて、だったら使い慣れたPytonのほうがいいじゃないかということで、Scilabを勉強するのはやめて、iPython Notebookを使うことにしました。今後はmatplotlibとかScipyとかでデータ解析や機械学習を勉強するつもりです。

■追記(150712)
前回作成したPythonのプログラムは2つの意味でまずかった。(1)バグがあって、新しい実行環境では動作しない(変数、x_valuesは値を導入せずに使っている。動いている理由は、過去に実行した値がPythonの実行環境に残っているから) (2)演習では、相対度数のヒストグラムを書けとなっているのに、絶対度数で書いていた。というわけで、修正版ソースは以下


import matplotlib.pyplot as plt
val={0:5,10:35,20:25,30:20,40:10,50:3,60:2}
x_values=sort(val.keys())
v_sum = sum(x_values)
print v_sum
print "+-----+-----+-----+"
print "|Range|Value|RegV |"
print "+-----+-----+-----+"
for x in x_values:
print "|%02d-%02d| %02d | %04.2f|" % (x, x+10, val[x],val[x]/float(v_sum))
print "+-----+-----+-----+"
y_values=[val[x]/float(v_sum) for x in x_values]
plt.bar(x_values,y_values,width=10)
plt.xlim([0,60])
plt.ylim([0,0.2])
plt.show()
テーブルも手書きのprint文でシコシコ書いているけど、ライブラリを使えばさっくりできそうです。でもよくまだわかっていない。

■メモ
http://matplotlib.org/gallery.html#showcase
matplotlibのギャラリー

www.geocities.jp/rui_hirokawa/scilab/intro-jp.pdf
https://books.google.co.jp/books?id=Ri1xivACY20C&pg=PA64&lpg=PA64&dq=scilab+%E8%A1%A8+%E4%BD%9C%E6%88%90&source=bl&ots=Z31Mbn8D1_&sig=AMeknote5lg8ILKfDqnFvecuctQ&hl=ja&sa=X&ved=0CHAQ6AEwDWoVChMIke6ug8fjxgIVyLCUCh0QVQRH#v=onepage&q=scilab%20%E8%A1%A8%20%E4%BD%9C%E6%88%90&f=false

http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.text