Kaggle の Titanic Prediction Competition でクラス分類(Keras Functional API編)

データサイエンティストの転職サイトを見ると年収 600万 ~ 1,200万円ぐらいだ。

書かれている内容を大体まとめると次のようなスキルが必要だと分かる。

【必須】

  • 統計学、機械学習に関する知識・実務経験
  • データ分析の実務経験(Python/R/C++などの経験)
  • PythonやR等のデータ解析プログラミングに関する経験・知識
  • ビジネスにおける定量的な効果検証・改善施策立案の経験
  • C++,Java,Pythonなどで実際のプロダクトやビジネス上の課題に対して自然言語処理を応用した経験(3年以上)
  • Cabocha,KNPなどの言語解析ツールの利用経験
  • Word2VecやNERなどの機械学習を応用したツールの利用経験
  • 英語メール,英語論文読解に抵抗のない方

【歓迎】

  • 開発プロジェクトマネジメントの経験
  • 国際論文(NIPS、 ICML、 KDD等)採録実績
  • 社外との要件定義など技術的打ち合わせ経験
  • 機械学習モデルの構築、改善の実務経験
  • 大規模なデータやサービスの分析の実務経験
  • データベース、SQLに関する実務経験
  • BtoBプロジェクトに関する経験
  • 機械学習 (LSTM,SVM,LDAなど)に対する経験

 

Pythonで機械学習フレームワークが利用できて、データ分析と統計学に精通していれば転職可能そうです。

 

 

前回データの可視化により、データ傾向を理解した上で、もう少しデータ加工やKerasを触って理解を深めてみる。

Jupyter notebookでscroll boxの高さを変える

ブラウザでみれるからHTMLなので次のように変更できるっぽい。

けど、縦軸は伸びなかった・・・。

データの概略をつかむ

前回は紹介しなかったが、このような見える化もできます。

ヒストグラムで概略をつかむ

Jupyter notebookで画像を表示するためにrcParamsを使ってサイズを変更しています。

ヒストグラムにするとかなりみやすいですね。

Ageは20~30代が多く、Survivedは生存できなかったほうが割合としては多いなど、傾向が一目でわかります。

相関係数で概略をつかむ

量的データどうしの相関関係をみるときには、ピアソンの積率相関係数を用います。

pandas.DataFrameオブジェクトからcorr()メソッドを呼ぶと、各列の間の相関係数が算出されます。

ここで「相関係数」はすべてデフォルトでは「ピアソンの積立相関係数」となっています。

相関係数の絶対値 強さ
0.0~0.2 相関無し
0.2~0.4 やや相関有り
0.4~0.7 強い相関がある
0.7~1.0 非常に強い相関がある

Sex(性別)、Fare(金額)、Pclass(階級)にも相関があります。

相関係数は、1 ~ -1 の値をとり、値が大きいほど強い正の相関があり、0に近いと相関はなし

また、Pythonのビジュアライゼーションライブラリseabornを使うと、corr()で得られるようなpandas.DataFrameをヒートマップとして簡単に可視化できます。

KerasでFunctional APIを利用

Kerasには2通りのModelの書き方があります。

「Sequential Model」と「Functional API Model」です。

「Sequential Model」は入力と出力が必ず1つずつのネットワーク構成しか定義することができません。

・・・ネット上には、そう書いてありますが、同じネットワークを「Sequential Model」と「Functional API Model」で書いて比較しているサイトが全くありません。

前回の「Sequential Model」を「Functional API Model」で書いてみます。

Sequentialで書いた場合

Functional APIで書いた場合

結果

難しいことは何もありませんでした。

 

 
ただ、、下記のように書くと違うのかな・・・・。

結果

結果は確かに違うけど・・・・、学習ネットワークとして本当に違うのか・・・な。

ソースコード

タイトルとURLをコピーしました