Pythonによるスクレイピング&機械学習 開発テクニックBeautifulSoup、scikit-learn、TensorFlowを使ってみよう
クジラ飛行机
- 定価
- 3,520円(本体価格 3,200円)
- 発売日
- 2016年12月6日
- 判型/ページ数
- B5変型/320ページ(オール2色)
- ISBN
- 978-4-8026-1079-7
SOLD OUT
いまどきのWebアプリに必須とも言える機械学習・深層学習・スクレイピング・クローリング。
こうした施術を習得するには、サンプルを動かしながら使ってみるのがいちばんの早道。
本書では、まずインターネットのクローリングと、そのデータのスクレイピングを行います。
そして、得られたデータを活用する例として、機械学習や深層学習、画像認識などの例を紹介しています、
実用的なものから、ちょっと笑えるものまで、さまざまなサンプルが紹介されているので、これからPythonをつかって何か新しいアプリを開発してみたい…という人には最適の一冊といえます。
★★著者によるサポートサイトが開設されました★★
http://kujirahand.com/blog/go.php?740
★0 章 機械学習のためのデータ処理とは
0-1 クローリング、スクレイピングそして機械学習
ビッグデータはネットにある
インターネットは宝の山
ブログやSNS – トレンド解析
ネットショップ – 商品データベースの利用
金融情報の利用
画像データの利用
行政機関の情報 – オープンデータ
辞書情報の利用
著作権切れの作品 – パブリックドメイン
機械学習用のデータセットの利用
スクレイピングとクローリング〜データの入手と加工
スクレイピングとは?
クローリングとは?
機械学習で使えるデータ構造
★1 章 クローリングとスクレイピング
1-1 データのダウンロード
Web 上の情報を取得する方法
urllib.request を使ったダウンロード
urlopen() を使ってファイルに保存する方法
Web からデータを取得してみよう
クライアントの接続情報を表示してみよう
任意のパラメーターを付けてリクエストを送信する方法
百人一首を検索するコマンドを自作してみよう
1-2 BeautifulSoup でスクレイピング
BeautifulSoup でスクレイピングしよう
BeautifulSoup のインストール
BeautifulSoup の基本的な使い方
任意のid で要素を探す方法
複数の要素を取得する – find_all() メソッド
DOM 要素の属性について
urlopen() とBeautifulSoup の組み合わせ
CSS セレクタを使う
Yahoo! ファイナンスの為替情報を取得してみよう!
1-3 CSS セレクタについて
HTML の構造確認にはWeb ブラウザーを使おう
任意の要素を選択してみよう
青空文庫で公開されている夏目漱石の作品一覧を得る
CSS セレクタをマスターしよう
CSS セレクタを抽出する練習をしてみよう
CSS セレクタで野菜・フルーツを選択しよう
正規表現と組み合わせる方法
1-4 リンク先を丸ごとダウンロード
丸ごとダウンロードを実現するのに必要な処理
相対パスを展開する方法
再帰的にHTML ページを処理すること
丸ごとダウンロードするプログラム
★2 章 高度なスクレイピング
2-1 ログインの必要なサイトからダウンロード
HTTP 通信について
クッキーについて
セッションについて
requests を使ってみよう
requestsモジュールのメソッド
ログイン時に送信しているデータを調べる
2-2 ブラウザーを経由したスクレイピング
Web ブラウザーを遠隔操作するSelenium について
画面なしブラウザー「PhantomJS」について
Selenium + PhantomJS の実行環境を整えよう
画面キャプチャしてみよう
会員制Web サイトにログインしてみよう
Selenium でスクレイピングする方法
Selenium でDOM 要素を選択する方法
Selenium で要素に対して行う操作
Selenium のドライバに対する操作
より詳しいSelenium のマニュアルについて
JavaScript を実行してみよう
2-3 スクレイピング道場
ページからリンク一覧を列挙する
URL の一覧を一気にダウンロードする方法
タグを解析してCSV ファイルとして出力するSNS で特定ユーザーの作品を全部お気に入りにしよう
2-4 Web API からのデータ取得Web API とは?
なぜ、Web API が提供されるのか?
Web API のデメリットも確認しておこう
Web API を利用しよう – OpenWeatherMap で天気予報
有名なWeb API の紹介
Rakuten Web Service
Yahoo! ショッピングWeb API
Recruit Web Service
ぐるなびAPI
日テレアプリ Web API
Twilio – 電話/SMS
ぽすたん(郵便番号→住所、住所→郵便番号)
OpenWeatherMap – 世界中の天気情報を取得
オープンデータ API
政府統計の総合窓口(e-Stat)
国立国会図書館サーチ
J-SHIS 地震ハザードステーション API
ハローワークのAPI
観光情報 公共クラウドシステムのAPI
国土交通省が提供する位置参照情報 API
国土交通省による国土数値情報のAPI
国税庁による法人番号システム Web-API
国土交通省土地総合情報システムAPI
2-5 cron と定期的なクローリング
定期的なクローリングについて
定期実行を使うメリットを確認
為替情報を毎日保存しよう
cron を仕掛けて毎日一回実行しよう
必要に応じて「nano」エディタをインストール
cron の設定を行う「crontab」
cron 実行時の環境変数に注意
crontab の記述方法の詳細
★3 章 データソースと書式・整形
3-1 Web のデータはさまざまなデータフォーマット
テキストデータとバイナリデータ
テキストデータにおける注意点
XML の解析
Python でXML の解析 – 地域防災拠点データを読む
JSON の解析
JSON の構造
Python でJSON の解析 – 百人一首を読む
JSON 形式を書き出す
YAML を解析する
Python でYAML の読み書き
YAML のデータ形式の紹介
CSV/TSV の解析
Python で単純なCSV ファイルを読む
Python でcsv モジュールを使う
Pandas も使える!
Excel ファイルの解析
Python-Excel をインストールしよう
Python でExcel ファイルを読む
Python でExcel ファイルに書き込む
Pandas を利用してExcel を読み出す方法
3-2 データベースについて
データベースについて
データの保存にはどのデータベースが向いている?
データベース
SQLite – お手軽単体ファイルのデータベース
MySQL を使う
docker でPython+MySQL の環境を整えよう
MySQL を起動してデータベースを作成しよう
Python から接続してデータベースを操作しよう
TinyDB を使う
★4 章 機械学習
4-1 機械学習とは
機械学習の概要どのようにして特徴や規則を調べるのか?
全自動ではない回帰分析とは?
機械学習の分類
教師あり学習
教師なし学習
強化学習
機械学習の流れ
機械学習の応用分野
クラス分類 (Classification)
グループ分け – クラスタリング (Clustering)
推薦 (Recommendation)
回帰 (Regression)
次元削減(Dimensionality Reduction)
過学習(過剰適合)について
4-2 機械学習はじめの一歩
scikit-learn – 機械学習のフレームワークについて
XOR 演算を学習させてみよう
フレームワークを利用してプログラムを楽に書く
アヤメを品種ごとに分類しよう
アヤメデータの入手
機械学習でアヤメの品種を分類しよう
訓練データとテストデータの分割を専用メソッドで
4-3 画像の文字認識
手書き数字の認識
手書き数字データならMNIST
画像データを学習させよう
6万件のフルデータで試してみよう
4-4 外国語の文章を判定
外国語の判定について
どのように判定を行うか?
サンプルデータの収集
言語判別のプログラム
データごとの分布をグラフにする
Web のインターフェイスを付けよう
学習済みのパラメーターを保存するプログラム
Web から使える言語判定アプリ
4-5 サポートベクターマシン(SVM) について
SVM とは?
SVM を実践で使ってみよう
データの分布を確認
SVM の種類について
4-6 ランダムフォレスト
ランダムフォレストとは?
ランダムフォレストを使ってみる
データを数値に直す際に気をつけること
4-7 データの検証方法について
クロスバリデーションについて
クロスバデーションを実践しよう
scikit-learn のクロスバリデーションを試す
グリッドサーチについて
★5 章 深層学習に挑戦しよう
5-1 深層学習とはなにか
深層学習——ディープラーニングについて
従来の画像認識と深層学習の手法の違い
ニューラルネットワークについて
パーセプトロンについて
そしてTensorFlow の世界へ
5-2 TensorFlow のインストール
TensorFlow について
インストール方法について
Ubuntu Linux (Docker) へのインストール
Ubuntu Linux へのインストール
macOS へのインストール
インストールできたかを確認する方法
TensorFlow に簡単な計算をさせてみよう
簡単な計算
5-3 Jupyter Notebook のススメ
Jupyter Notebook のセットアップと起動
新規ノートを作成しよう
コメントやドキュメントを入力しよう
ノートを保存しよう
出力がおかしくなったら
Python 以外にも使える
データを視覚化してみよう
Python のパスは?
グラフに日本語を表示する
TensorFlow とともに利用しよう
5-4 TensorFlow の基本を押さえよう
TensorFlow の基本
TensorFlow での変数の表現方法
TensorFlow のプレースホルダについて
機械学習に挑戦しよう
5-5 TensorBoard で視覚化しよう
TensorBoard の使い方
掛け算を行うコードを視覚化してみよう
変数を使った場合
機械学習を行うプログラムをTensorBoard に表示
TensorBoard を見やすくするために処理をまとめよう
5-6 TensorFlow で深層学習に進もう
深層学習の仕組み
畳み込み層について
プーリング層について
全結合層について
深層学習を実践してみよう – MNIST の手書きデータ再び
5-7 Keras でもっと楽に深層学習を実践しよう
Keras について
Keras のインストール
Keras でMNIST を試してみよう
Keras で肥満度判定ができるか試してみよう
5-8 Pandas/NumPy を使いこなそう
Pandas/NumPy について
Pandas/NumPy を使うには
DataFrame について
任意のデータの抽出
ソートや反転
データに対する操作
NumPy への変換
Pandas/Numpy のまとめ
★6 章 テキスト解析とチャットボットの作成
6-1 日本語の解析(形態素解析)について
形態素解析について
代表的な形態素解析のライブラリ
利用実績の多い定番ライブラリ「MeCab」
インストールがとにかくな簡単ピュアPython 解析器「Janome」
出現頻度の解析
夏目漱石の「こころ」もカウントしよう
6-2 Word2Vec で文章をベクトル変換しよう
Word2Vec について
Gensim とインストールについて
Gensim のWord2Vec で「こころ」を読む
夏目漱石「こころ」のモデルで遊んでみよう
夏目漱石・太宰治・芥川龍之介の作品をベクトル化しよう
夏目漱石のモデルで遊んでみよう
Wikipedia 日本語の全文データを辞書に使ってみよう
Wikipedia の全文データで遊んでみよう
6-3 ベイズの定理でテキストを分類しよう
テキストの分類に関する考察
ベイズの定理を紹介
ベイズの定理より、条件付き確率について
同時確率と乗法定理(積の法則)
ベイズの定理
イーブベイズ分類について
ベイジアンフィルタを使ってみよう
6-4 MLP でテキスト分類してみよう
MLP でテキスト分類しよう
livedoor ニュースコーパスをサンプルとして利用
テキストデータを固定長ベクトルに変換する方法
テキストの分類に挑戦してみよう
テキストの分かち書き
単語をID に変換し出現回数を数える
MLP でテキストの分類をしよう
6-5 文章の類似度をn-gram で調べよう
文章の類似度を調べることについて
レーベンシュタイン距離について
Python でレーベンシュタイン距離を計算するプログラム
N-gram で類似度を調べよう
6-6 マルコフ連鎖やLSTM で文章を生成しよう
マルコフ連鎖とLSTM/RNN について
マルコフ連鎖とは
マルコフ連鎖を実装してみよう
LSTM/RNN について
LSTM で文章を生成する
6-7 チャットボットの作成
チャットボット(会話ボット)について
チャットボットの仕組み
ボットに機械学習を導入する意味
ボットを作ろう
チャットボットのプログラムを実行してみよう
チャットボットのプログラム
★7 章 深層学習を実践してみよう
7-1 類似画像の検出をしよう
簡単な形状認識 – Average Hash
たくさんの画像から類似する画像を検索する
7-2 CNN でCaltech 101 の画像分類に挑戦しよう
CNN でカラー画像の分類に挑戦しよう
画像データをPython のデータ型に変換しよう
CNN を実践してみよう
さらに精度を上げるために
学習済みモデルを保存しよう
7-3 牛丼屋のメニューを画像判定しよう
牛丼判定ができるPC が良いPC である
スクレイピングからはじめよう
教師データの作成 – 手作業で牛丼を振り分けよう
画像データを数値データに変換しよう
まずはCNN で学習してみる
判定精度を向上させよう
コマンドラインで画像を判定できるようにしよう
7-4 OpenCV で顔認識
OpenCV について
OpenCV のインストール
Python3 用のCV2 モジュールのインストール
顔認識するプログラムを作ってみよう
顔にモザイクをかけよう
7-5 画像OCR – 連続文字認識に挑戦しよう
OpenCV でテキスト領域を認識しよう
100 桁の数字で挑戦
数字認識データを作ろう
100 個の数字をMNIST データで認識してみる
いろいろな数字フォントを学習させよう
★Appendix 作業の準備と環境構築
Appendix 1 Docker で開発環境を構築しよう
Docker とは
Docker のインストール
Windows10 以下でDocker Toolbox をインストール
macOS でDocker Toolbox をインストール
Appendix 2 Python + Anaconda の環境を整える
Docker が正しく動くか検証
Python + Anaconda のイメージをダウンロード
コンテナの状態を保存しよう
コンテナの再開について
ホストOS のホームディレクトリをマウントしよう
その他のインストール
ダウンロードデータ
本書で解説したサンプルデータをダウンロードできます。
なお、使用方法などに関しては、必ず書籍の該当箇所をご確認の上、ご利用ください。
ダウンロード後、解凍したファイル内に「readme.txt」ファイルなどが含まれる場合は、使用前にこちらもご確認ください。
※TensorFlow1.1.0対応に伴い6刷ではプログラムに若干の修正があります。1-5刷をお持ちのお客様でTensorFlow1.1.0への対応をご希望のかたは、お手数ですが、以下の修正ファイルを適用してください。
正誤情報
- 2017.03.06OpenCVのバージョンアップに伴う問題
- 2017.03.06初版第1刷、2刷、3刷における訂正
- 2017.03.06初版第1~5刷における修正情報
- 2017.03.07TendowFlow1.1.0への対応(1刷~5刷)
OpenCVのバージョンアップに伴う問題
OpenCCVのバージョン4への移行に伴い、書籍のソースコードをOpenCVバージョン4環境下で動かそうとしてもは動作しないようです。この問題に対応したソースコードの入手に関しては、著者のサイトを参考にしてください。
★著者によるサポートサイトの「書籍の修正内容 — 2019/07/19の更新 」の項
初版第1刷、2刷、3刷における訂正
P.290 ~291のソースリスト「src/ch6/mlp3-classify.py」において、原稿執筆時に入力に使ったデータのパラメータが変わったため、入力データの不整合が発生しておりました。2017年2月25日以降のダウンロードファイルでは修正してあります。
ご自分で入力される場合には、「mlp3-classify.py」を以下のように修正すると動作します。
また、修正したファイル単体をzip形式でアップロードしてありますので、2017年2月25日より前にダウンロードされたかたは、こちらの単体ファイルをご利用下さい。、
初版第1~5刷における修正情報
5章で、TensorFlowのラッパーであるKerasを利用する方法を紹介していますが、書籍で紹介している方法では、互換性の問題で、エラーが出てしまうようです。
この問題の解決方法は、TensorFlowを最新版にすることです。実は、書籍ではサンプルプログラムの実行に問題がないように、TendsorFlowのバージョンを指定してインストールするようにしております。
===
$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/mac/cpu/ t
e n s o r f l o w – 0.1 0.0 – p y 3 – n o n e – a n y.w h l
$ pip3 install –upgrade $TF_BINARY_URL
===
幸い、書籍でKerasを紹介した後は、TensorFlowを使う場面はありません。以後はKerasのみを利用します。
そこで、Kerasをインストールするときに、TensorFlowをアップデートしてもらうという方法が一番、スマートに対処できます(※ただし、この方法ではTensorFlowがバージョンアップされてしまうことに留意してください)。
[変更前]
===
$ pip3 install keras
===
[変更後]
===
# conda で TensorFlow の最新版インストール
$ conda install -c conda-forge tensorflow
# pip3 で keras をインストール
$ sudo pip3 install keras
===
TendowFlow1.1.0への対応(1刷~5刷)
TensorFlowのバージョンアップに伴い、いくつかの変更点があります。本書の第5刷りまでをお買い上げの方で、ベータ版ではなく、バージョン1.1.0のTensorFlowをお使いになる場合には、以下のようにしてください。
○203、204、240ページを以下のように読み換える(TensorFlowインストール方法の変更)
p.203
「 $ conda create -n tensorflow python=3.4 」を以下に変更。
===
*# AnacondaのパッケージマネージャーでTensorFlowをインストール*
*$ conda install -c conda-forge tensorflow=1.1.0*
===
p204の以下の部分も、上と同じにしてください。
$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/mac/cpu/ t
e n s o r f l o w – 0.1 0.0 – p y 3 – n o n e – a n y.w h l
$ pip3 install –upgrade $TF_BINARY_URL
そして、Kerasのインストールでも、TensorFlowの1.1.0に合わせて、以下のバージョンでインストールするようにします。Kerasののバージョン指定も、以下のように修正してください。
p.240
===
-[x] $ pip3 install keras
-[o] $ sudo pip3 install keras==2.0.5
===
○プログラムを差し替える( API変更によるソースコードの変更)
5章の以下のファイルに変更が必要です。
– ch5/tb-mul.py
– ch5/tb-add.py
– ch5/tb-bmi.py
– ch5/tb-bmi2.py
– ch5/mnist-deep.py
変更は2カ所ありますが、単純にAPIの名前が変わっただけです。上記のファイルについて、以下の2パターンの置換を行ってください。
– [x] tw = tf.train.SummaryWriter(“log_dir”, graph=sess.graph)
– [o] tw = tf.summary.FileWriter(“log_dir”, graph=sess.graph)
– [x] tf.initialize_all_variables()
– [o] tf.global_variables_initializer()
これらの修正済みのファイルとPDFは、以下のリンクからダウンロードすることができます。
お問い合わせ
本書に関するお問い合わせは、下記のボタンをクリックしてお問い合わせフォームよりお問い合わせください。