古典的問題「ビュフォンの針」のシミュレーション!
なんかいろいろやったなあ。
記事①:Pythonで円周率を求めよう ~ビュフォンの針を落とす ep1~
記事②:クラスを継承して改良しよう ~ビュフォンの針を落とす ep2~
記事③:Pythonでグラフ描写して検証する ~ビュフォンの針を落とす ep3~
記事④:Pandasでグラフに針を落とす ~ビュフォンの針を落とす ep4~
過去4回、古典的シミュレーションの問題「ビュフォンの針」をやってみました。
思いもよらぬ方向に進みましたが、それだけにいろいろなテクニックを使えました。
では、振り返ってみましょう。
1.「ビュフォンの針」シミュレーションはどうだったか?
ep1でシミュレーションプログラムをつくれました。(結局ここが完成品でしたね)
ep2で角度θを使わないプログラムをつくろうとすると変になりました。
ep3で、ep2で作ったプログラムの検証を統計とグラフで行いました。やっぱりおかしかったですね。
ep4でビュフォンの針を視覚的表現してみました。
ep1で意外と簡単にシミュレーションができました。
ep2で失敗しましたが、そのおかげでグラフ表示や統計を詳しく試せました。
まさにケガの功名といったところですね。
今回も大体面白くやれたのでOKです。
ep2でやろうとした、角度θを使わないシミュレーションは結局うまい作戦が見つかりませんでしたね。
ここが心残りですね。
2.今回使ったテクニック
今回使ったテクニックを挙げてみましょう。
①:mathモジュールによる三角関数
数学関係の処理を行えるモジュールです。今回はこれで三角関数を計算しました。
三角関数以外にも、絶対値とかの一般的な数学処理、指数関数や対数関数等を使えるようです。
②:Classの継承とオーバーライド
「オブジェクト指向」の考え方を応用できました。
前に作ったものを無駄にしない。確かにこれは強力ですね。
「オブジェクト指向をなぜつくるのか?」を読んでおいて良かったです。
③:statisticsモジュールによる統計計算
平均値、中央値、偏差値の計算を行うモジュールです。
他にも最頻値、調和平均、分散などが計算できるようです。
④:matplotlibライブラリによるグラフ表示
今回の裏テーマです。これがやりたかった!今後も使うと思います。
ヒストグラム、散布図、折れ線グラフを使いました。
凡例表示、グラフ範囲設定、色を変えるなどなど、今回やりました。
非常に多機能で、かなりいろいろできます。
他にも円グラフ、棒グラフ、3Dグラフなどが描けるようです。
⑤:Pandasライブラリによるフレームワーク処理
機械学習やデータサイエンスで使用するPandasライブラリを使用しました。
フレームワークを作成し、そこにデータを入れていきます。
今回は、まだ本格的な使用はできていませんが、少し感覚をつかめました。
いやーいろいろと使ってますね。
とくに④と⑤は今後も使うでえあろう重要なライブラリです。Pandasは予定外でした。
3.matplotlibライブラリについて
今回は、これでグラフを書くのがひとつのテーマでした。
matplotlibについては、こちらページ(matplotlibのめっちゃまとめ)が非常によくまとまっています。
非常に簡単に多種多様なグラフが描けます。
しかも、細かく設定しなくても、とりあえずいい感じにしてくれます。
また、グラフ処理に関するいろいろな処理、たとえばX軸Y軸の名前、範囲など大体のことが出来ます。
グラフの色もめちゃめちゃ選べます。公式ページ参照。
いやー凄いですね。本当にグラフの関することならほぼ書けます。
勝手にいい感じにしてくれる感じはExcel以上だと思います。
4.まとめ
今回、古典的シミュレーションを実施することが出来ました。
つまり、私はコンピューターシミュレーションをやったと言い張って良いということです。
また、図らずもデータサイエンスに片足を突っ込めました(かな?)。
つまり、データサイエンティストの端くれを名乗っても良いということです。
では、次の「おもちゃ」で!
PyQさんで勉強中!一緒にやりましょう!
コメント