Python機械学習クックブック 第2版

[cover photo]
TOPICS
クックブック , Python
発行年月日
PRINT LENGTH
428
ISBN
978-4-8144-0084-3
原書
Machine Learning with Python Cookbook, 2nd Edition
FORMAT
Print PDF EPUB
Ebook
4,180円
Ebookを購入する
Print
4,180円

Pythonによる機械学習を行う上で、頻繁に遭遇すると思われる216の問題とその解決策を紹介します。データ構造、数値データ、カテゴリデータ、テキスト、画像、日時データの取り扱いといった基本から、特徴量抽出、次元削減、モデルの評価と選択、線形回帰、決定木、ランダムフォレスト、k-最近傍法、SVM、ナイーブベイズ、クラスタリング、ニューラルネットワークまで幅広い内容をカバー。この改訂版では、最新のフレームワークに対応するとともに、ニューラルネットワーク関連の項目をPyTorchベースで大幅に増量。「やりたいこと」「困っていること」に答えてくれる一冊です。

目次

はじめに

1章 NumPyベクトル、行列、配列
    レシピ1.0 はじめに
    レシピ1.1 ベクトルの作成
    レシピ1.2 行列の作成
    レシピ1.3 疎行列の作成
    レシピ1.4 NumPy配列の事前確保
    レシピ1.5 要素の選択
    レシピ1.6 行列の性質を取得する
    レシピ1.7 要素に対する関数の適用
    レシピ1.8 最大値と最小値を見つける
    レシピ1.9 平均値、分散、標準偏差の計算
    レシピ1.10 配列形状の変更
    レシピ1.11 ベクトル、行列の転置
    レシピ1.12 行列のフラット化
    レシピ1.13 行列のランク
    レシピ1.14 行列の対角要素の取得
    レシピ1.15 行列トレースの計算
    レシピ1.16 内積の計算
    レシピ1.17 行列の加算、減算
    レシピ1.18 行列の乗算
    レシピ1.19 逆行列の算出
    レシピ1.20 乱数の生成

2章 データのロード
    レシピ2.0 はじめに
    レシピ2.1 サンプルデータセットのロード
    レシピ2.2 シミュレーションによるデータセットの生成
    レシピ2.3 CSVファイルのロード
    レシピ2.4 Excelファイルのロード
    レシピ2.5 JSONファイルのロード
    レシピ2.6 Parquetファイルのロード
    レシピ2.7 Avroファイルのロード
    レシピ2.8 SQLiteデータベースの検索
    レシピ2.9 リモートSQLデータベースの検索
    レシピ2.10 Google
    レシピ2.11 S3バケットからのデータロード
    レシピ2.12 非構造化データのロード

3章 データラングリング
    レシピ3.0 はじめに
    レシピ3.1 データフレームの作成
    レシピ3.2 データの情報を取得
    レシピ3.3 DataFrameのスライス
    レシピ3.4 条件を用いた行の選択
    レシピ3.5 値のソート
    レシピ3.6 値の置き換え
    レシピ3.7 列の名前を変更
    レシピ3.8 最小値、最大値、合計、平均値、カウント数の算出
    レシピ3.9 ユニークな値の抽出
    レシピ3.10 欠損値の取り扱い
    レシピ3.11 列の削除
    レシピ3.12 行の削除
    レシピ3.13 重複した行の削除
    レシピ3.14 値による行のグループ分け
    レシピ3.15 時刻による行のグループ分け
    レシピ3.16 集約演算と集約統計量
    レシピ3.17 列に対するループ
    レシピ3.18 ある列のすべての要素に対して関数を適用する
    レシピ3.19 関数をグループに適用
    レシピ3.20 DataFrameの連結
    レシピ3.21 DataFrameのマージ

4章 数値データの取り扱い
    レシピ4.0 はじめに
    レシピ4.1 特徴量のスケール変換
    レシピ4.2 特徴量の標準化
    レシピ4.3 観測値の正規化
    レシピ4.4 多項式特徴量と交互作用特徴量
    レシピ4.5 特徴量の変換
    レシピ4.6 外れ値の検出
    レシピ4.7 外れ値の取り扱い
    レシピ4.8 特徴量の離散化
    レシピ4.9 クラスタリングによる観測値のグループ分け
    レシピ4.10 欠損値がある観測値を取り除く
    レシピ4.11 欠損値の補完

5章 カテゴリデータの取り扱い
    レシピ5.0 はじめに
    レシピ5.1 名義カテゴリ特徴量の数値化
    レシピ5.2 順序カテゴリ特徴量の数値化
    レシピ5.3 特徴量辞書の数値化
    レシピ5.4 欠損クラス値の補完
    レシピ5.5 不均等なクラスの取り扱い

6章 テキストの取り扱い
    レシピ6.0 はじめに
    レシピ6.1 テキストのクリーニング
    レシピ6.2 HTMLのパースとクリーニング
    レシピ6.3 句読点の除去
    レシピ6.4 テキストのトークン化
    レシピ6.5 ストップワードの除去
    レシピ6.6 語幹の抽出
    レシピ6.7 品詞タグ付け
    レシピ6.8 固有表現抽出を行う
    レシピ6.9 BoW(Bag of Words)によるテキストエンコード
    レシピ6.10 単語への重み付け
    レシピ6.11 テキスト検索でテキストベクトルを用いてテキストの類似性を計算する
    レシピ6.12 感情分析クラス分類器を使用する

7章 日時データの取り扱い
    レシピ7.0 はじめに
    レシピ7.1 文字列の日時データへの変換
    レシピ7.2 タイムゾーンの取り扱い
    レシピ7.3 日付と時間による選択
    レシピ7.4 日付データを複数の特徴量に分解
    レシピ7.5 日付の差の算出
    レシピ7.6 曜日の算出
    レシピ7.7 時間遅れ特徴量の生成
    レシピ7.8 移動時間窓の利用
    レシピ7.9 時系列データ中の欠損値の取り扱い

8章 画像の取り扱い
    レシピ8.0 はじめに
    レシピ8.1 画像のロード
    レシピ8.2 画像の保存
    レシピ8.3 画像サイズの変更
    レシピ8.4 画像のクロップ
    レシピ8.5 画像のぼかし
    レシピ8.6 画像をくっきりさせる
    レシピ8.7 コントラストの強調
    レシピ8.8 色の分離
    レシピ8.9 画像の2値化
    レシピ8.10 背景除去
    レシピ8.11 エッジの検出
    レシピ8.12 コーナーの検出
    レシピ8.13 機械学習用の特徴量を作成
    レシピ8.14 色ヒストグラムをエンコードした特徴量
    レシピ8.15 訓練済みのエンベディングを特徴量として用いる
    レシピ8.16 OpenCVを用いた物体検出
    レシピ8.17 PyTorchを用いた画像のクラス分類

9章 特徴量抽出による次元削減
    レシピ9.0 はじめに
    レシピ9.1 主成分を用いた特徴量削減
    レシピ9.2 データが線形分離不能な際の特徴量削減
    レシピ9.3 クラスの分離性最大化による特徴量削減
    レシピ9.4 行列因子分解による特徴量削減
    レシピ9.5 疎データの特徴量削減

10章 特徴量選択による次元削減
    レシピ10.0 はじめに
    レシピ10.1 数値特徴量の分散による閾値処理
    レシピ10.2 2値特徴量の分散による閾値処理
    レシピ10.3 強く相関した特徴量の取り扱い
    レシピ10.4 クラス分類に無関係な特徴量の削除
    レシピ10.5 再帰的な特徴量の除去

11章 モデルの評価
    レシピ11.0 はじめに
    レシピ11.1 交差検証
    レシピ11.2 ベースライン回帰モデルの作成
    レシピ11.3 ベースラインクラス分類モデルの作成
    レシピ11.4 2クラス分類器の評価
    レシピ11.5 2クラス分類器閾値の評価
    レシピ11.6 多クラス分類器による予測の評価
    レシピ11.7 クラス分類器性能の可視化
    レシピ11.8 回帰モデルの評価
    レシピ11.9 クラスタリングモデルの評価
    レシピ11.10 評価指標のカスタマイズ
    レシピ11.11 訓練セットサイズによる影響の可視化
    レシピ11.12 評価指標に関するテキストレポートの生成
    レシピ11.13 ハイパーパラメータの効果の可視化

12章 モデル選択
    レシピ12.0 はじめに
    レシピ12.1 全解探索による最良モデル選択
    レシピ12.2 ランダム探索による最良モデルの選択
    レシピ12.3 複数の学習アルゴリズムから最良のモデルを選択
    レシピ12.4 前処理がある場合の最良モデルの選択
    レシピ12.5 並列化によるモデル選択の高速化
    レシピ12.6 アルゴリズム固有の方法を用いたモデル選択の高速化
    レシピ12.7 モデル選択後の性能評価

13章 線形回帰
    レシピ13.0 はじめに
    レシピ13.1 直線によるフィッティング
    レシピ13.2 交互作用の影響の取り扱い
    レシピ13.3 非線形な関係の学習
    レシピ13.4 正則化によるバリアンスの低減
    レシピ13.5 Lasso回帰による特徴量削減

14章 決定木とフォレスト
    レシピ14.0 はじめに
    レシピ14.1 決定木を用いたクラス分類器の訓練
    レシピ14.2 決定木回帰器の訓練
    レシピ14.3 決定木モデルの可視化
    レシピ14.4 ランダムフォレストクラス分類器の訓練
    レシピ14.5 ランダムフォレスト回帰器の訓練
    レシピ14.6 ランダムフォレストのOOBエラーによる評価
    レシピ14.7 ランダムフォレストにおける重要な特徴量の特定
    レシピ14.8 ランダムフォレストにおける重要な特徴量の選択
    レシピ14.9 不均等なクラスの処理
    レシピ14.10 決定木サイズの制御
    レシピ14.11 ブースティングによる性能の向上
    レシピ14.12 XGBoostモデルの訓練
    レシピ14.13 LightGBMを用いたリアルタイム性能改善

15章 k-最近傍法
    レシピ15.0 はじめに
    レシピ15.1 観測値の近傍の発見
    レシピ15.2 k-最近傍法クラス分類器の作成
    レシピ15.3 最適な近傍サイズの特定
    レシピ15.4 半径を用いた最近傍クラス分類器の作成
    レシピ15.5 近似最近傍の発見
    レシピ15.6 近似最近傍法の評価

16章 ロジスティック回帰
    レシピ16.0 はじめに
    レシピ16.1 2クラス分類器の訓練
    レシピ16.2 多クラス分類器の訓練
    レシピ16.3 正則化によるバリアンスの削減
    レシピ16.4 大規模データに対するクラス分類器の訓練
    レシピ16.5 クラスサイズが不均衡な場合の取り扱い

17章 サポートベクタマシン
    レシピ17.0 はじめに
    レシピ17.1 線形クラス分類器の訓練
    レシピ17.2 カーネルを用いた線形分離不能なクラスの取り扱い
    レシピ17.3 予測確率の生成
    レシピ17.4 サポートベクタの特定
    レシピ17.5 不均等なクラスサイズの取り扱い

18章 ナイーブベイズ
    レシピ18.0 はじめに
    レシピ18.1 連続値特徴量に対するクラス分類器の訓練
    レシピ18.2 離散値特徴量とカウント特徴量に対するクラス分類器の訓練
    レシピ18.3 2クラス特徴量に対するナイーブベイズクラス分類器の訓練
    レシピ18.4 予測確率の較正

19章 クラスタリング
    レシピ19.0 はじめに
    レシピ19.1 k-平均法によるクラスタリング
    レシピ19.2 k-平均法クラスタリングの高速化
    レシピ19.3 平均値シフト法によるクラスタリング
    レシピ19.4 DBSCANを用いたクラスタリング
    レシピ19.5 階層的併合によるクラスタリング

20章 PyTorchのテンソル
    レシピ20.0 はじめに
    レシピ20.1 テンソルの作成
    レシピ20.2 NumPy配列からテンソルを作成する
    レシピ20.3 疎なテンソルの作成
    レシピ20.4 テンソルの要素の選択
    レシピ20.5 テンソルの性質を取得する
    レシピ20.6 各要素に対して演算する
    レシピ20.7 最大値と最小値
    レシピ20.8 テンソルのリシェイプ
    レシピ20.9 テンソルの転置
    レシピ20.10 テンソルのフラット化
    レシピ20.11 内積の計算
    レシピ20.12 テンソルの乗算

21章 ニューラルネットワーク
    レシピ21.0 はじめに
    レシピ21.1 PyTorchの自動微分を使う
    レシピ21.2 ニューラルネットワークのためのデータ前処理
    レシピ21.3 ニューラルネットワークの設計
    レシピ21.4 2クラス分類器の訓練
    レシピ21.5 多クラス分類器の訓練
    レシピ21.6 回帰器を訓練する
    レシピ21.7 予測を行う
    レシピ21.8 訓練過程の可視化
    レシピ21.9 重みの正則化による過学習の緩和
    レシピ21.10 早期停止による過学習の緩和
    レシピ21.11 ドロップアウトによる過学習の緩和
    レシピ21.12 モデル訓練の途中結果をセーブする
    レシピ21.13 ニューラルネットワークのチューニング
    レシピ21.14 ニューラルネットワークを可視化する

22章 非構造化データ向けのニューラルネットワーク
    レシピ22.0 はじめに
    レシピ22.1 画像クラス分類を行うニューラルネットワークの訓練
    レシピ22.2 テキストのクラス分類を行うニューラルネットワークの訓練
    レシピ22.3 訓練済みモデルのファインチューニングによる画像クラス分類
    レシピ22.4 訓練済みモデルのファインチューニングによるテキストクラス分類

23章 訓練済みモデルのセーブとロード
    レシピ23.0 はじめに
    レシピ23.1 scikit-learnモデルのセーブとロード
    レシピ23.2 TensorFlowモデルのセーブとロード
    レシピ23.3 PyTorchモデルのセーブとロード
    レシピ23.4 scikit-learnモデルのサービス化
    レシピ23.5 TensorFlowモデルのサービス化
    レシピ23.6 Seldonを用いたPyTorchモデルのWebサービス化

付録A 日本語テキストの取り扱い
    レシピA.0 はじめに
    レシピA.1 日本語のテキストのトークン分割
    レシピA.2 日本語テキストに対するBoW特徴量

索引