『Pythonによる機械学習入門』サンプルコードについて。
2016-11-28 ISP
2024-02-01 ISP ライブラリ更新に追随するため更新

本サンプルコードは 株式会社システム計画研究所(編) 『Pythonによる機械学習入門』に対応したサンプルコード及び必要なデータ類です。
2024年2月1日時点でpython3.8環境で動作するように修正しました。


[動作環境]
スクリプトはpython3.8で環境を構築して動作評価されています（3.10でも評価をしています）。
必要なライブラリはpipで入れることができます。

pip install -r requirments.txt


[使い方]
コードの実行はスクリプトがあるフォルダをカレントとして以下のように行います。

  #コマンドラインの場合
  python スクリプト名

  # IPythonを含むpythonコンソールの場合は以下のように実行します。
  run スクリプト名

6章のスクリプトはあらかじめdata.zipが解凍しておくことが必要です。さらに、引数が必須であることに注意してください。
7章はスクリプトとデータがあるフォルダで実行してください。


[初版における修正箇所]
・P124 リスト6-2
  60行目、61行目  print文の括弧を追加

・P129 リスト6-3
  60行目、61行目  print文の括弧を追加 

・P183
  2行目  dt.を削除
  誤：tmp['day'] = tmp.index.dt.day
  ↓
  正：tmp['day'] = tmp.index.day

・P180
  21行目 fillnaでinplace=True指定を追加

  誤：tmp["sunhour"].fillna(-1)
  ↓
  正：tmp["sunhour"].fillna(-1,inplace=True)

・P184
  最後、図7.8を出力するコードは7-5-3-2-graph.pyではなく7-5-5-4-graph.pyの誤りです。また、プロット対象に学習データを含めてしまっていますので図7-8も若干異なります。

[python3.8環境に向けての修正点概要]
◆01
・sklearn.cluster.KMeansでn_init='auto'を明示（ライブラリの変更に伴うWarning対応）

◆03
・ensemble.AdaBoostClassifierのbase_estimator引数をestimatorに変更（ライブラリの変更に追随）

◆05
・sklearn.cluster.KMeansでn_init='auto'を明示（ライブラリの変更に伴うWarning対応）
・型指定のnp.intをintに変更（非推奨への対応）

◆06
・datasets.base.Bunchが sklearn.utils.Bunchに変更されたのでその対応
・型指定のnp.intをintに変更（非推奨への対応）
・sklearn.svm.LinearSVCでdual="auto"と max_iter=10000の追加
  -> dualはライブラリの変更に伴うWarning対応
     max_iterは既定のままでは足りないことがあるので明示指定した。
・skimage.io.imread as_grey → as_gray（ライブラリの変更に追随）
・skimage.feature.hog  visualise → visualize（ライブラリの変更に追随）
・ax1.set_adjustable('box-forced')の削除（ライブラリの変更に追随）

◆07
・pandas DataFrameのas_matrix()をvaluesに変更（ライブラリの変更に追随）
・sklearn.cross_validation.KFoldをsklearn.model_selection.KFoldに変更
  → ライブラリの変更に追随。引数名は使用法の変更にも対応
・sklearn.cross_validation.train_test_splitをsklearn.model_selection.train_test_splitに変更

◆App_A
・plt.hold("on")の削除（ライブラリの変更に追随）

以上
