Python Machine Learning 書籍コード リポジトリ
重要な注意事項 (2017/09/21):
この GitHub リポジトリには、Python Machine Learning 本の第 1 版のコード例が含まれています。第 2 版のコード例をお探しの場合は、代わりにこのリポジトリを参照してください。
400 ページには、理論から直接実行できる実際のコードに至るまで、機械学習を始めるために知っておく必要のある有用な資料がほぼすべて含まれています。これは、単なる「これが scikit-learn の仕組みです」という本ではありません。私は、基礎となるすべての概念を説明し、ベスト プラクティスと注意事項に関して知っておくべきことをすべて伝えることを目的としています。また、主に NumPy、scikit-learn、Theano を使用してこれらの概念を実践していきます。
この本があなたに適しているかどうかわかりませんか?詳細については、序文と序文の抜粋をご覧いただくか、FAQ セクションをご覧ください。
初版、2015 年 9 月 23 日発行
ペーパーバック: 454 ページ
出版社: パックト出版
言語: 英語
ISBN-10: 1783555130
ISBN-13: 978-1783555130
Kindle ASIN: B00YSILNL0
ドイツ語 ISBN-13: 978-3958454224
日本語 ISBN-13: 978-4844380603
イタリア語 ISBN-13: 978-8850333974
中国語 (繁体字) ISBN-13: 978-9864341405
中国語 (本土) ISBN-13: 978-7111558804
韓国語 ISBN-13: 979-1187497035
ロシア語 ISBN-13: 978-5970604090
目次とコードノートブック
章見出しの横にあるipynb
/ nbviewer
リンクをクリックするだけで、コード例が表示されます (現在、内部ドキュメントのリンクは NbViewer バージョンでのみサポートされています)。これらは、本書に付属するコード例にすぎず、便宜のためにアップロードしたものであることに注意してください。これらのノートブックは、数式や説明文がなければ役に立たない可能性があることに注意してください。
- 序文と序文からの抜粋
- Python と Jupiter Notebook のセットアップ手順
- 機械学習 - コンピューターにデータから学習する能力を与える [dir] [ipynb] [nbviewer]
- 分類のための機械学習アルゴリズムのトレーニング [dir] [ipynb] [nbviewer]
- Scikit-Learn を使用した機械学習分類器のツアー [dir] [ipynb] [nbviewer]
- 優れたトレーニング セットの構築 – データの前処理 [dir] [ipynb] [nbviewer]
- 次元削減によるデータの圧縮 [dir] [ipynb] [nbviewer]
- モデル評価とハイパーパラメータ最適化のベスト プラクティスを学ぶ [dir] [ipynb] [nbviewer]
- アンサンブル学習のための異なるモデルの組み合わせ [dir] [ipynb] [nbviewer]
- 機械学習を感情分析に適用する [dir] [ipynb] [nbviewer]
- Web アプリケーションへの機械学習モデルの埋め込み [dir] [ipynb] [nbviewer]
- 回帰分析による連続ターゲット変数の予測 [dir] [ipynb] [nbviewer]
- ラベルなしデータの操作 – クラスタリング分析 [dir] [ipynb] [nbviewer]
- 画像認識のための人工ニューラル ネットワークのトレーニング [dir] [ipynb] [nbviewer]
- Theano によるニューラル ネットワーク トレーニングの並列化 [dir] [ipynb] [nbviewer]
方程式のリファレンス
[PDF] [TEX]
教育用スライド
ロヨラ大学シカゴ校で現在提供されている機械学習コースのスライドを共有してくれた Dmitriy Dligach に多大な感謝を申し上げます。
- https://github.com/dmitriydligach/PyMLSlides
追加の Math および NumPy リソース
一部の読者は、長さの制限により含まれていないため、Math および NumPy の入門書について質問していました。ただし、私は最近別の本のためにそのようなリソースをまとめましたが、この本の役立つ背景資料としても役立つことを願って、これらの章をオンラインで無料で利用できるようにしました。
この本を引用する
本書のコード スニペットやその他の内容を科学出版物やその他の著作物で再利用することは大歓迎です。この場合、元の情報源を引用していただければ幸いです。
ビブテックス:
@Book{raschka2015python,
author = {Raschka, Sebastian},
title = {Python Machine Learning},
publisher = {Packt Publishing},
year = {2015},
address = {Birmingham, UK},
isbn = {1783555130}
}
MLA :
ラシュカ、セバスチャン。 Python 機械学習。バーミンガム、英国: Packt Publishing、2015 年。印刷。
フィードバックとレビュー
短いレビューのスニペット
Sebastian Raschka の新しい本、Python Machine Learning が発売されました。レビューを読む機会がありましたが、予想通りで、本当に素晴らしかったです。よく整理されており、非常に理解しやすく、賢明な非専門家にとって優れた基礎を提供するだけでなく、実践者もここでいくつかのアイデアを得て、新しいトリックを学ぶことができます。
– Data Elixir の Lon Riesberg
素晴らしい仕事です!これまでのところ、私にとっては、理論と実践、つまり数学とコードの適切なバランスが取れているようです。
– ブライアン・トーマス
私は Scikit-learn をベースにしたあらゆる機械学習のタイトルを (事実上) 読んできましたが、これは間違いなく最高のタイトルです。
– ジェイソン・ウォロソノビッチ
PACKT Publishing から出版された本としては私が見た中で最高のものです。これは、Python による機械学習について非常によく書かれた入門書です。他の人も指摘しているように、理論と応用が完璧に融合したものです。
– ジョシュ D.
理論を制御するために必要な数学と Python の応用コーディングを組み合わせた、入手困難な特質が融合した本です。また、他の多くの本がより多くの読者にアピールするためだけに行うように、Python の入門書を提供するのに紙を無駄にしないのも素晴らしいことです。 DIY オタクだけではなく、知識豊富なライターによって書かれていることがわかります。
– アマゾンのお客様
Sebastian Raschka は、理論と実践を組み合わせた素晴らしい機械学習チュートリアルを作成しました。この本では機械学習を理論的な観点から説明しており、機械学習テクニックを実際にどのように使用するかを示すコード例が多数掲載されています。初心者でも上級プログラマーでも読むことができます。
- William P. Ross、Python の必読書 7 冊
長いレビュー
この本があなたに適しているかどうかを判断するのに助けが必要な場合は、以下にリンクされている「長い」レビューをいくつかチェックしてください。 (レビューを書いていただけましたら、お知らせください。喜んでリストに追加させていただきます。)
- Chartered Institute for IT の Patrick Hill による Python Machine Learning レビュー
- 書評: Python Machine Learning by Sebastian Raschka by Alex Turner at WhatPixel
リンク
- Amazon.com、Amazon.co.uk、Amazon.de の電子ブックおよびペーパーバック
- Packt (出版社) からの電子ブックとペーパーバック
- 他の書店: Google Books、O'Reilly、Safari、Barnes & Noble、Apple iBooks など
- ソーシャル プラットフォーム: Goodreads
翻訳
- 「Apogeo」によるイタリア語翻訳
- 「mitp Verlag」によるドイツ語翻訳
- 「Impress Top Gear」による日本語翻訳
- 中国語翻訳(繁体字)
- 中国語翻訳(簡体中国語)
- 「キョボ」による韓国語翻訳
- 「Helion」によるポーランド語翻訳
参考文献と詳細な資料
正誤表
おまけノート(単行本未収録)
- ロジスティック回帰の実装 [dir] [ipynb] [nbviewer]
- 基本的なパイプラインとグリッド検索のセットアップ [dir] [ipynb] [nbviewer]
- 拡張されたネストされた相互検証の例 [dir] [ipynb] [nbviewer]
- シンプルな Barebones Flask Webapp テンプレート [ディレクトリを表示][zip ファイルとしてダウンロード]
- MNIST から NumPy 配列への手書き数字の読み取り [GitHub ipynb] [nbviewer]
- JSON を使用した Scikit-learn モデルの永続化 [GitHub ipynb] [nbviewer]
- 多項ロジスティック回帰 / ソフトマックス回帰 [GitHub ipynb] [nbviewer]
「関連コンテンツ」(書籍には含まれていません)
- 機械学習におけるモデルの評価、モデルの選択、アルゴリズムの選択 - パート I
- 機械学習におけるモデルの評価、モデルの選択、およびアルゴリズムの選択 - パート II
- 機械学習におけるモデルの評価、モデルの選択、およびアルゴリズムの選択 - パート III
サイピー2016
オースティンで開催された SciPy 2016 ではとても楽しい時間を過ごすことができました。たくさんの私の本の読者と会って話をすることができて本当にうれしかったです。たくさんの素敵な言葉やフィードバックをありがとうございました!見逃した方のために、アンドレアス ミュラーと私がScikit-learn を使用した機械学習の概要を説明しました。ご興味がございましたら、パート I とパート II のビデオ録画がオンラインで公開されています。
PyData シカゴ 2016
私は、PyData Chicago 2016 で、わずか90 分で scikit-learn と機械学習を紹介するというかなり難しいタスクに挑戦しました。スライドとチュートリアル資料は、「Learning scikit-learn -- An Introduction to Machine Learning in Python」で入手できます。
注記
私は、機械学習 (および一般的な「データ サイエンス」) アルゴリズムの追加実装を含む別のライブラリmlxtend
セットアップしました。また、本書の実装 (たとえば、決定領域プロット、人工ニューラル ネットワーク、逐次特徴選択アルゴリズム) に機能を追加しました。
翻訳
親愛なる読者の皆様
まず初めに、皆様の素晴らしいサポートに感謝したいと思います。これまでにお送りいただいた素晴らしいフィードバックすべてに本当に満足しており、この本が幅広い読者にとって非常に役に立ったことを嬉しく思います。
過去 2 か月間、何百通ものメールを受け取りましたが、時間内でできるだけ多くのメールに返信しようと努めました。他の読者にも役立つように、私の回答の多くを FAQ セクション (下記) にまとめました。
さらに、読者が本の内容について議論できるプラットフォームについての質問もいただきました。これが他の読者と議論し、知識を共有する機会となれば幸いです。
Google グループのディスカッション掲示板
(時間が許せば、私自身も質問に答えるように最善を尽くします! :))
良いアドバイスを得るためにできる唯一のことは、それを伝えることです。それは自分自身にとって決して役に立ちません。
— オスカー・ワイルド
読者による事例と応用
もう一度、この本についてたくさんの素晴らしいフィードバックをいただき、ありがとうと言わなければなりません。読者から、この本のコンセプトや例を現実の世界に落とし込み、プロジェクトに活用しているというメールをたくさん受け取りました。このセクションでは、これらの素晴らしいアプリケーションをいくつか集め始めています。あなたのプロジェクトをこのリストに喜んで追加したいと思います。簡単にメールを送ってください。
- Richard Lyman による光学式文字認識に関する 40 のスクリプト
- Jeremy Nation によるコード実験
- Jean-Nicholas Hould 著『Python でゼロから分類子を実装して学んだこと』
よくある質問
一般的な質問
- 機械学習とデータサイエンスとは何ですか?
- あなたや他の人が時々機械学習アルゴリズムをゼロから実装するのはなぜですか?
- データ サイエンスのどの学習パス/分野に重点を置く必要がありますか?
- どの時点でオープンソースへの貢献を始めるべきでしょうか?
- 学習プロセスにとってメンターの存在はどの程度重要だと思いますか?
- データ サイエンス/機械学習、または Python を中心とした最高のオンライン コミュニティはどこですか?
- ソフトウェア エンジニアに機械学習をどのように説明しますか?
- 機械学習の初心者向けのカリキュラムはどのようなものになりますか?
- データサイエンスの定義とは何ですか?
- データサイエンティストはモデル選択をどのように行うのでしょうか?カグルとは違うのですか?
機械学習分野に関する質問
- 人工知能と機械学習にはどのような関係があるのでしょうか?
- 機械学習を実際に応用した例にはどのようなものがありますか?
- データマイニングのさまざまな研究分野には何がありますか?
- 機械学習とデータマイニングという 2 つの分野の研究の性質の違いは何ですか?
- 問題が機械学習によって解決できるかどうかはどうすればわかりますか?
- 機械学習の起源は何ですか?
- 学習機械としての分類はどのように開発されたのでしょうか?
- どの機械学習アルゴリズムが最も優れていると考えられますか?
- 分類器の大まかなカテゴリは何ですか?
- 分類器とモデルの違いは何ですか?
- パラメトリック学習アルゴリズムとノンパラメトリック学習アルゴリズムの違いは何ですか?
- 機械学習におけるコスト関数と損失関数の違いは何ですか?
ML の概念と統計に関する質問
コスト関数と最適化
- 閉形式方程式によるモデルのフィッティング vs 勾配降下法 vs 確率的勾配降下法 vs ミニバッチ学習 -- 違いは何でしょうか?
- 線形回帰と Adaline の勾配降下法則はどのように導き出すのでしょうか?
回帰分析
樹木モデル
- ランダム フォレスト モデルはどのように機能するのでしょうか?アンサンブル モデルのバギングやブースティングとどう違うのですか?
- 大規模なデータセットに対して従来のデシジョン ツリー アルゴリズムを使用する場合の欠点は何ですか?
- デシジョン ツリー アルゴリズムの実装が通常バイナリであるのはなぜですか?また、さまざまな不純物メトリクスの利点は何ですか?
- なぜ分類エラーではなくエントロピーを介して決定木を成長させているのでしょうか?
- ランダムフォレストのパフォーマンスが著しく低下するのはどのような場合ですか?
モデルの評価
- 過学習とは何ですか?
- 過剰適合を避けるにはどうすればよいでしょうか?
- 相互検証を実行するときは、可能な限り最大のフォールド数を使用する方が常に良いのでしょうか?
- SVM 分類器をトレーニングするとき、サポート ベクターの数は多いほうが良いのでしょうか、それとも少ないほうが良いのでしょうか?
- モデルを評価するにはどうすればよいですか?
- 複数クラス分類に最適な検証メトリックは何ですか?
- 予測モデル手法を選択する際にはどのような要素を考慮する必要がありますか?
- 分類器の動作を視覚化して理解するのに役立つ最適なおもちゃのデータセットは何ですか?
- SVM カーネルはどのように選択すればよいですか?
- 幕間: 相互検証におけるパフォーマンス メトリクスの比較と計算 -- 不均衡なクラスの問題と F1 スコアを計算する 3 つの異なる方法
ロジスティック回帰
- ソフトマックス回帰とは何ですか?また、ロジスティック回帰とどのような関係がありますか?
- ロジスティック回帰が線形モデルとみなされるのはなぜですか?
- 正則化ロジスティック回帰の確率的解釈は何ですか?
- ロジスティック回帰での正則化は常により良い適合とより良い一般化をもたらしますか?
- 単純ベイズとロジスティック回帰の主な違いは何ですか?
- 機械学習の文脈における「ソフトマックスと多項ロジスティック損失」とは正確には何ですか?
- ロジスティック回帰とニューラル ネットワークの関係は何ですか?いつどちらを使用するべきですか?
- ロジスティック回帰: なぜシグモイド関数なのか?
- 線形回帰の正規方程式に似たロジスティック回帰の分析ソリューションはありますか?
ニューラルネットワークとディープラーニング
- ディープラーニングと通常の機械学習の違いは何ですか?
- ニューラルネットワークのバックプロパゲーションアルゴリズムを視覚的に説明していただけますか?
- ディープネットワークが発明されるまでになぜこれほど時間がかかったのでしょうか?
- ディープラーニングを学ぶのに適した本や論文は何ですか?
- なぜこれほど多くの深層学習ライブラリがあるのでしょうか?
- ニューラル ネットワークやディープ ラーニングを嫌う人がいるのはなぜですか?
- ディープ ラーニングが特定の問題に対して SVM やランダム フォレストよりも効果的に機能するかどうかを確認するにはどうすればよいですか?
- ニューラル ネットワークのエラーが増加すると何が問題になるのでしょうか?
- 人工ニューラル ネットワーク アルゴリズムをデバッグするにはどうすればよいですか?
- パーセプトロン、Adaline、ニューラル ネットワーク モデルの違いは何ですか?
- ドロップアウト手法の背後にある基本的な考え方は何ですか?
教師あり学習のためのその他のアルゴリズム
- Nearest Neighbor が遅延アルゴリズムであるのはなぜですか?
教師なし学習
半教師あり学習
- 教師あり学習および教師なし学習に対する半教師あり学習の利点は何ですか?
アンサンブルメソッド
- 分類子とスタッキングを組み合わせるのは、最適なものを選択するよりも優れていますか?
前処理、特徴選択、抽出
- テスト データを変換するためにトレーニング パラメーターを再利用する必要があるのはなぜですか?
- 機械学習におけるさまざまな次元削減方法には何がありますか?
- 次元削減における LDA と PCA の違いは何ですか?
- データの正規化/標準化はいつ適用する必要がありますか?
- 平均センタリングまたは特徴スケーリングは主成分分析に影響しますか?
- 多数の機能を含む機械学習の問題にどうやって対処すればよいでしょうか?
- 欠損データに対処するための一般的なアプローチにはどのようなものがありますか?
- 機能選択におけるフィルター、ラッパー、埋め込みメソッドの違いは何ですか?
- データ準備/前処理ステップは特徴エンジニアリングの一部とみなすべきでしょうか?なぜ、あるいはなぜそうではないのでしょうか?
- テキスト分類のためのバッグ オブ ワード特徴表現はスパース行列として考慮されますか?
ナイーブ・ベイズ
- 単純ベイズ分類器が単純であるのはなぜですか?
- Naive Bayes の決定境界は何ですか?
- 混合変数型に単純ベイズ分類器を使用できますか?
- Naive Bayes では、バイナリ機能や継続機能など、さまざまな変数タイプを混合することは可能ですか?
他の
- 機械学習におけるユークリッド距離とは何ですか?
- 平均や平均ではなく、中央値を使用する必要があるのはどのような場合ですか?
データサイエンスと機械学習のためのプログラミング言語とライブラリ
- R は現在データ サイエンスの分野で広く使用されていますか?
- TensorFlow と scikit-learn の主な違いは何ですか?
本に関する質問
- この本の段落や画像をプレゼンテーションやブログで使用できますか?
- これは他の機械学習の本とどう違うのですか?
- コード例で使用された Python のバージョンはどれですか?
- どのようなテクノロジーとライブラリが使用されていますか?
- どの本のバージョン/形式をお勧めしますか?
- 機械学習に Python を選んだ理由は何ですか?
- コード例で先頭と末尾のアンダースコアを非常に多く使用しているのはなぜですか?
- コード例の
return self
イディオムの目的は何ですか? - 前提条件や推奨される事前読書はありますか?
- SVM をカテゴリデータに適用するにはどうすればよいですか?
接触
喜んで質問にお答えします!メールをお送りいただくか、Google グループのメール リストで質問することをご検討ください。
連絡を取り合いたい場合は、データ サイエンスと機械学習に関する非常に活発な Twitter ストリーム (@rasbt) をご覧ください。また、特に興奮していることをすべて投稿するブログも管理しています。