鉄道模型工作実験室

Nゲージ鉄道模型に関する工作や実験を行っています。

Pythonを使用した機械学習の教本を開く

RTMRW

最近流行りのAIについて、以前から興味があったので、その手始めとして「機械学習」について触ってみることにした。
そのための教本として選定したのが、インプレス社の「いちばんやさしい Python 機械学習の教本 第2版」である。
現在のAIブームは第3次の深層学習の時代であり、機械学習は40年前から始まった第2次ブームで発展したとのこと。興味があったのは、データ収集方法としてのWEBスクレイピング手法なのである。
この手法は、いろいろなサイトから目的とする情報を収集する方法なので、鉄道模型のWEBサイトを開設している小生としては興味あるテーマなのである。
そして、使用するアプリが Python とくれば、一度は挑戦してみたくなるのであった。


でも、大きな壁にぶつかってしまったのである。

  ********************************


第1章、第2章はすいすいと軽く読み飛ばし、第3章の「スクレイピングでデータを収集しよう」でつなずいてしまったのである。
今回は、そのつなずき具合を記録していくことにする。


1)WEBページのアクセスを拒否される。
第3章の初めに記載されているコマンドを Python に打ち込んで実行すると、エラーが表示され、それ以降の手順が実行できないのである。初めからつまずいているのである。


import requests
res = requests.get('https://book.impress.co.jp/books/1119101162')
res.status_code


たったこれだけのコマンドであるが、実行すると長いエラー文が表示されて、正常時に表示される"200"のコードが表示さず、それ以降のコマンドを受け付けてくれないのである。
教本のうたい文句として、講義+実習のワークショップ形式で、楽しく学べる「はじめてでも挫折しない」Pythonの入門書です------とのことですが、まずもって”実習”が出来ない状態となっているのです。
ソフトのインストールを間違えているかも知れないと、再インストールを実施したが、結果は同じであった。


2)なぜ拒否されるのだろうか?
学習が前に進まないので、いろいろ知れべてみた。まず、https://book.impress.co.jp/ として実行するとやはりエラーが出た。このことはサーバーの入口で拒否されていることを示唆している。
そこで、Yahoo やAmazon などの有名サイトや、普段からアクセスしている20ヶ所ほどのサイトにお邪魔してみたが、すべて OK 表示の"200"のコードを返してくれた。
このことから、教本が提示しているインプレス社だけが、アクセスを制限していると判断しました。


うるさいアクセスを拒否することは、理解できますが、何も「講義+実習のワークショップ形式のサイト」まで拒否するとは、出版物における詐欺ではないか-------!❓


3)問い合わせるも返事なし
もう1週間以上たちますが、返事がありません。無視されているのか、重大なトラブルなのか。この教本は第2版として、2023年2月21日に出版されています。初版は2020年とのことですので、今年の2月までは何ら問題なかったと思われます。


4)学習用のダミーサイトが欲しい
どれだけの読者がアクセス拒否にあったのかわかりませんが、アクセス拒否されると学習が進みません。そこで、自分でダミーサイトを作ってみることにしました。その内容を下記に示します。


  ********************************
作成したダミーサイトの内容を下に示します。

そして、個別の書籍については

のページを作りました。学習用のダミーサイトですから、スクレイピング対象の部分は元本と同じようにするために修正していませんが、他の不要な邪魔な部分はすべて削除しています。必要なリンク以外もすべて削除しています。
  **********************************
ダミーサイトは、レンタルサーバーに開設している我がサイト「鉄道模型工作実験室」内に構成しましたが、著作権を心配して公開はしていません、
  **********************************
文字化けなどのトラブルもありましたが、結果は良好でした。スクレイピングは実施でき、教本の学習を進めることが出来ました。

 ダミー作戦は大成功である  

****************************************************************************

プライベートアーカイブを作る

RTMRW

 愛読していた「鉄道模型机上の空論」さんのブログサイトが、閉鎖されるとのアナウンスが出ていた。最近の更新が途絶えていたので心配していたがやはり閉鎖されるようだ。
 蒸気機関車の分解調査レポートなど、内容がピカイチであったので大いに参考にさせてもらったが残念である。
 ところで、ブログが閉鎖されるとなると、これらの報告レポートを見ることが出来なくなってしまうのです。そこで、プリントアウトしようとしたがあきらめました。本文以外に余分な情報が多すぎる事や、画像部分が小さいので印刷するには効果的ではないと判断した。その代わりとして、興味ある報告レポートを中心とし、自分のパソコン内にアーカイブを作ることにした。自分のパソコン内のことであるので、著作権には触れないと考えている。


 ***********************************************
 アーカイブを作成するにあたり、このブログの構成を見てみると4種類のページから構成されていることが分かった。


(1)数件の個別報告をまとめている目次的なページ構成。コメント欄が表示されない。
(2)個別報告ごとのページ構成で、コメント欄も表示されている。
(3)画像関係をまとめた目次のページ。
(4)写真やイラストなど、拡大図として一つずつ表示しているページ。


 そして、広告の欄がうるさくまとわりつき、非常に邪魔となっている。また、拡大図は横幅が640ピクセルを基本とし、ピントがばっちりで綺麗な写真であり、撮影技術のレベルが推定される。アーカイブはこの拡大写真を活用することにした。


 単に、ページを保存するだけの処理では、この拡大図を保存することは出来なかった。そこで面倒だが、ページを再編集することにした。個別の報告レポートとしての内容に従って、次の2種類のページ作成することにした。なお、ブラウザは Googl Chrome を使用しています。


(A)ます、個別報告のページを表示しておき、広告の欄を消した状態で一つのファイルとして保存する。”名前を付けて保存” ⇒ ”ウェブページ、1っのファイル(*.mhtml)”


(B)各写真の拡大図を一つずつ事前にダウンロードしておき、横幅が大きいものは640ピクセルに縮小する。そして、横幅700ピクセルの専用のページを作り、テキスト部分はサイトのページからコピー&ペーストで取り込み、画像部分はダウンロードした拡大写真をはめ込んで編集して行く。手間がかかり根気がいる作業であるが、写真の質と報告内容が立派なのでせっせと作業を実施した。


作成したアーカイブです。 まず目次のページを作りました。

   

次に、タイプ(B)の個別のページです。

   

もとの原本のページは、下の様な状態です。

  

 自分にとって必要な情報だけを取込んでおり、大切に保管して参考にして行きたいと思います。
 ***********************************************************************
 著者のバラックモデルさん、有用な情報を有難うございました。今後もどこかで継続されることを期待しています。
 ***********************************************************************
追記:
この私の投降後、すぐ後で、著者のバラックモデルさんはSeesaaブログにそっくり移転される処理を実施されていました。安心しました。今後ともよろしく。
 ***********************************************************************

ESP32-DevKitc-32Eの使い勝手

RTMRW

 ESP32-DevKitc-32Eを使ってみました。この部品は、Espressif Systems社の無線通信モジュールであるESP32-WROOM-32Eを搭載し、必要な電源回路、USB、I/Oポートなどを引き出したユニット構成であり、手軽に実験や組込み工作が行えます。

      

その仕様は、電源として、USB microBメスコネクタやピンヘッダから5V、あるいは3.3Vのどれか一つから給電することが出来ます。無線は2.4GHzのWi-Fi とBluetooth が使えます。フラッシュメモリは4MBもあります。


 このモジュールのWi-Fi 通信を使って、タブレットを使ったモニタ画面より、鉄道模型の運転制御を遠隔操作しようと実験しました。


 同じような実験は、以前ラズパイを使って実施していますが、今回は ArduinoMEGAを使った登山鉄道レイアウトの運転システムの応用しようとしたものです。
    
    


今回実施したシステムの概要は次の通りです。

 このシステムの内容は、次のサイトで報告しています。
    


 そして、今回の実験を通して感じたESP32-DevKitc-32Eの使い勝手をまとめてみました。


1)通信は、WEB方式に従い、HTML形式によるサーバとクライアントのやり取りとして実施した。


2)ESP32はWEBサーバ機能はあるものの、OSが走っているラズパイと違って、テキスト形式の文字情報した取扱えないこと、即ち、画像ファイルは使えないのである。これはモニタ画面の構成に大きな影響があり、単純な構成を余儀なくされる。


3)画像ファイルを使った下記のようなモニタ構成にする場合、構成する画像はモニタ側でそのファイルを用意しなければならない。

       

4)Javascript などの細工も html 記述の中に含めるか、モニタ側のファイル構成の中に含める必要がある。このため、モニタ画面構成のためのファイル類一式をパソコン内に保管し、その中のhtmlファイルを使ってモニタ表示させた。


5)タブレットやスマホの場合、画像ファイルを含むファイル構成がアプリでは表示できない場合があるので、画像ファイルの取扱えるWEBサーバを別途用意する必要がある。今回は常時起動しているレンタルサーバを活用した。LANによる通信を使った場合は画像も表示できるのだ。


6)Wi-Fi によるシリアル通信の方法は、受信側の処理が面倒と思われるので未検討である。でも、この場合でも画像ファイルはモニタ側で用意する必要があるだろう。


7)Processingを使ってモニタ画面を構成する方法もあるが、シリアル通信の方法が未検討であること、タブレットやスマホでProcessingが使えるかどうか不明なので、検討していません。


  **************************************************************
メリットとしては、Arduinoと同じIDEが使用でき、連携も容易なのでシンプルなシステムとして構成出来る点が挙げられる。