Pythonの使用法:自動車事故を機械学習で予測geopandas, seaborn ver. 4

久しぶりに機械学習を勉強します。

テキストは次にあります。ニュージーランドの交通事故を予測します。

 

Vehicle Crashes & Machine Learning

 

スクリプトは次にあります。説明しやすいように一部変えているところもありまが、ほぼそのまま使用させていただいています。

 

https://gist.github.com/shakasom/382a5cc0c59e24fdae29679de6d7e88a

 

順次書き加えます。

 

I.データの取得

 

ネット上のデータを読み込みます。JavaScript系のjson形式のデータですが、地図も含まれる?ので1.21GBの大きなデータです。

読み込みに数分かかると思います。Jupyter Notebookの場合、下の画像には見えていませんが、この画像のIn[1]:という表示があります。番号のところが*だと作業中ということなので待ってやってください。

データはダウンロードして、URLの代わりに、ダウンロードしたファイルのパスをいれて利用した方が早くなりますが、それでも何分かかかります。

 

 

II.Exploratoray Data Analysis (EDA)

 

1.集計結果のテキストへの埋め込みと写真の挿入

 

記述統計的分析、つまり、データを人にわかりやすく要約します。

死亡者数、重傷者数、継承者数を集計してテキストに埋め込みます。ついでに写真もいれます。

 

 

2.死者数、重傷者数、軽傷者数の推移のグラフ

 

冒頭リンク先文書にはありませんが、年別合計の推移の棒グラフをseabornで作成しました。

 

 

3.死者数、重傷者数、軽傷者数の平均の推移のグラフ

 

各年の死亡者数、重傷者数、継承者数を事故数で割って平均を出します。seabornを使うと、短いスクリプトでグラフにできます。エラーバーまで付いています。

エラーバーはバーの上の黒いたてのラインで、偏差、つまり、平均からは離れている数値が多いか少ないかを示しています。長いと、多かったり少なかったりの激しかった年だとわかります。

 

 

4.事故ごとの死者数、重傷者数、軽傷者数の人数別合計のグラフ

 

冒頭リンク先文書のグラフで何を数えているのかわからなかったので、次の画像の末尾のように確認したらわかりました。それぞれの数字の出現数を合計しているのですね。

 

 

5.事故の程度と事故ごとの死者数を集計

 

 

6.死者数、重傷者数、軽傷者数の平均の推移のグラフ

 

ラインの上下の影は、たぶん、95%のconfidence interval(信頼区間)です。正規分布ふうの分布であれば、95%が上下の影の範囲に入いります。一般には、範囲が狭い方が、この平均値が信頼できるるということです。ただし、サンプル数が十分で正規分布ふうの分布であることが前提です。

統計を勉強し始めて、「信頼区間95%」と出会うと、「もう無理!」になりますよね。これは正規分布、偏差、標準偏差と関わっています。「うちの学生は標準偏差がわわからなくて、こまったもんだ」というのは統計の先生からよく聞く言葉です。

確かに、それはそうなのかもしれませんが、アンケートを集計していると、そもそも無作為でかたよりのないサンプルでないのに、95%といわれもなあ!と思います。試験結果だとよほど大規模な工夫された試験でなけば正規分布することはまれだと思います。留学生が多いといくつも山ができます。それで信頼区間や標準偏差といってもなあと思いますし、平均値でさえもあまり意味のない場合もよくあります。

seabornのように統計ソフトで簡単にしかも美しく描かれると、そのまま信じたくもありますが、結果だけ、数字だけみて判断するのは危険です。

で、どうしたらよいかというと、まずは自分の直感反することは疑ってみるべきです。そして、データ分析の基本はよく言われることですが、まず、散布図とかヒストグラムで確認します。

それでも、データ自体のサンプリングが適切でないとだめなので、類似データを分析することも含めて、サンプルデータ数をやたら増やす以外てはないでしょう。

それにしても、seabornはすごく簡単な式できれに描けけてびっくりです。ただし、この場合は件数が60万件以上ですので私のコンピュータでは数分かかります。Jupyter Notebookなら画面左の*が数字に変わるまで待ってやってください。

 

 

7.Mapにデータを表示

 

地図上にデータを配置できます。拡大、縮小、移動が可能なインターアクティブな画像です。

 

 

 

 

II.Machine Learning

 

to be continued

Please follow and like us:

About shibatau

I was born and grown up in Kyoto. I studied western philosophy at the University and specialized in analytic philosophy, especially Ludwig Wittgenstein at the postgraduate school. I'm interested in new technology, especially machine learning and have been learning R language for two years and began to learn Python last summer. Listening toParamore, Sia, Amazarashi and MIyuki Nakajima. Favorite movies I've recently seen: "FREEHELD". Favorite actors and actresses: Anthony Hopkins, Denzel Washington, Ellen Page, Meryl Streep, Mia Wasikowska and Robert DeNiro. Favorite books: Fyodor Mikhailovich Dostoyevsky, "The Karamazov Brothers", Shinran, "Lamentations of Divergences". Favorite phrase: Salvation by Faith. Twitter: @shibatau

Leave a Reply

Your email address will not be published. Required fields are marked *