『すぐに使える!業務で実践できる!Pythonによる AI・機械学習・深層学習アプリのつくり方』のサポートページ *

機械学習や深層学習も、手軽に試せるようになってきました。本書では、さまざまなサンプルプログラムを作って、業務で役立つプログラムを作り方を紹介するものです。

Pythonによる AI・機械学習・深層学習アプリのつくり方
Pythonによる AI・機械学習・深層学習アプリのつくり方

正誤表 --- 2019/06/26の更新 *

scikit-learnのバージョンについて *

OpenCV4への対応について *

本書では以前、OpenCV3を利用していましたが、OpenCV4になって、いくつかのメソッドの使い方が変わりました。具体的には、OpenCV4以降、findContoursの返り値が変わりました。

以下のコマンドを実行して、4.x.xが表示される場合が該当します。

python3 -c "import cv2;print(cv2.__version__)"

修正が必要なプログラムは、以下の通りです。

  • p.152 --- find_contours.py
  • p.156 --- detect_zip.py
  • p.167 --- diff_camera.py
  • p.177 --- fishvideo_find.py
  • p.172 --- fishvideo_extract_diff.py

p.155 紙面の修正内容 OpenCV4への対応 *

OpenCV4になり『[書式] 輪郭の抽出を行う』のfindContoursの使い方が変わりました。

  • [x] images, contours, hierarchy = cv2.findContours(image, mode, method)
  • [o] contours, hierarchy = cv.findContours(image, mode, method)

p.391でPython3.5の環境を作成する *

Anacondaをインストールした後、Pythonを3.5に切り替える際、仮想環境を作成する場合に、以下のコマンドが失敗する場合があります。

source activate py35

新しいcondaコマンドにactivateが追加されたので、以下のように書き換えます。

# condaを最新版に書き換え
conda update anaconda
conda init bash
# 一度シェルを開き直した後、以下のように環境を変更
conda activate py35

正誤表(4刷以降 --- 2018/09/01更新) *

p.209 入力コマンドのファイル名間違い *

  • [x] $ cat jawiki-latest-pages-articles-* > wiki.wp2txt
  • [o] $ cat jawiki-latest-pages-articles-* > wiki.txt

p.333 ソースコード『train_mlp.py』にて *

GitHubのソースコードは修正されています。

  • [冒頭に追加] import numpy as np, h5py
  • [x] x, y, test_size=0.2)
  • [o] np.array(x), np.array(y), test_size=0.2)

正誤表(4刷 --- 2018/08/10更新) *

P208 *

  • (誤)モデルを作成するための大量の分かち書きデータを含め、コンピュータによる〜
  • (正)モデルを作成するための大量の分かち書きデータを含むコンピュータによる〜

P.211 similar.py *

  • 末尾2行のプログラムは削除しても問題なく動作します。

P.225 *

  • [x]そして、始点となる単語を「魚」とするとしましょう。そうすると、「魚」につながる単語は、「魚 | は」になります。
  • [o] そして、始点となる単語を「魚」とするとしましょう。そうすると、「魚」につながる単語は、「魚 | は」あるいは「魚 | を」となります。ここでは、「魚 | は」をランダムに選んだとしましょう。

P.231 *

  • (誤) 基本語ドメイン辞書
  • (正) 解析済みブログコーパス

P.261 *

  • [x]『プレースホルダ』とは、値をテンプレートに値を当てはめるための仕組みです
  • [o]『プレースホルダ』とは、テンプレートに値を当てはめるための仕組みです

P.324 *

  • [x] その手法として、学習させるすべての文書で、その単語がどのくらいの頻度で使われているかを調べます。
  • [o] その手法として、学習させるすべての文書で、その単語がどのくらいの頻度で使われているかを調べます。この時、IDFは全文書における単語の出現頻度の『逆数』です。逆数にすることで、ありふれた単語の重要度を下げます。

P.351 *

  • [x] SQLiteであれば、Pythonの標準ライブラリなので、とくにモジュールをインストールしたり、データベース・サーバーの設定を行う必要はありません。
  • [o] SQLiteであれば、Pythonに最初から同梱されているので、とくにモジュールをインストールしたり、データベース・サーバーの設定を行う必要はありません。

 

正誤表 (1-3刷 --- 2018/07/30更新) *

P.18 L.3 *

  • (誤) そして、『人口知能((AI)』とは〜
  • (正) そして、『人工知能(AI)』とは〜

P.19 L.13 *

  • (誤) 次元削減
  • (正) データの次元数を削減

P.72 *

  • 誤:どのような手順を踏んだら良いのでしょうか。・・・・・以下のような順番で機械学習を実践しましょう。
  • 正:まず、ゴールを決定しましょう。ここでは、「がく片や花びらの長さと幅から、アヤメの品種を分類する」ことをゴールとします。そのために、以下の順番で機械学習プログラムを実装しましょう。

P.86 precision, recall, f1-scoreについて詳しい補足 *

  • [x] precisionが精度、recallが再現率 (実際に正解した割合)、f1-scoreが精度と再現率の調和平均で、supportが正解ラベルのデータの数です。
  • [o] precisionが精度(適合率)、recallが再現率、f1-scoreが精度と再現率の調和平均で、supportが正解ラベルのデータの数です。precision(精度)は、正と予測したデータのうち実際に正であるものの割合で、recall(再現率)は、実際に正であるもののうち正であると予測されたものの割合、つまり、実際に正解した割合です。

P.90 コラム L.1 *

  • (誤) 複数の分類記を用いて性能を向上させる
  • (正) 複数の分類木を用いて性能を向上させる

P.96 *

  • (誤) 以下のプログラムを実行して、Coraboratoryの仮想マシン上に
  • (正) 以下のプログラムを実行して、Colaboratoryの仮想マシン上に

P.103 予測データの作成『yosoku.py』のプログラム *

  • [x] if i <= interval: continue
  • [o] if i < interval: continue

条件式にイコールがあると、temps[0]のデータが説明変数xに含まれなくなってしまうため、イコールを消します。(具体的なソースコード

P107 *

  • 誤:97%を超える
  • 正:96%を超える

P108 *

  • ソースコード(※1)の下、「allAlgorithms = ・・・」の上に以下を追加。現在このコードの説明はあるが、コードにない状態
  • warnings.filterwarnings('ignore')

P.110 補足を追加 *

  • 学習データが少ない場合、評価の信ぴょう性を上げるためにクロスバリデーションを行うことが多くあります。

P.125 *

  • (誤) 「.JPEG」にすれば、JPEG画像に変換されて保存します。
  • (正) 「.jpg」にすれば、JPEG画像に変換されて保存します。

P.304 5章 img-resize.py *

  • [誤] img = cv2.resize(img, (im_size, im_size))
  • [正] img = cv2.resize(img_gray, (im_size, im_size))

なお、GitHubにあるソースコードは既に修正済みです。

P.139 subplotの書式をより正確に *

  • [x] pyplot.subplot( 行数 , 列数 , 何番目を描画するか )
  • [o] matplotlib.pyplot.subplot( 行数 , 列数 , 何番目を描画するか )