機械学習 ベストプラクティス
Update 2023.12.18
サイト立上2003.06.03
1千万人超ありがとう
リピータ ノーカウント
Jupyter Notebook の ipynb ファイルがダウンロードできます
このHPのコンテンツはソースコードを含めて自由に使っていただいて結構です
Python3(Anaconda3) on Jupyter Notebook on Windows 11(仮想環境)
Python3(Anaconda3) on PyCharm on Windows 11(仮想環境)
GPUなしCPUマシン インストール方法:間違いない方法を丁寧にこと細かく
Python3(Anaconda3) on Jupyter Notebook on Windows 11(仮想環境)
Python3(Anaconda3) on PyCharm on Windows 11(仮想環境)
on GPUマシン インストール方法:間違いない方法を丁寧にこと細かく
「AIエンジニア/データサイエンティスト」になるために
マスターしたい必須スキルを詳細に紹介する
定番テキストも紹介する

Python3(3.10)で動くソースコード(.pyファイル .ipynbファイル)あります

「anaconda3」on .py「PyCharm」.ipynb「Jupyter Notebook」

出力された図が見つからない場合は図のアイコンがタスクバーにあります

【機械学習 TwoMoons 2層DNN フロムスクラッチ】
斎藤 康毅「ゼロから作るDeepLearning」のJupyter Notebookのソースコードがきちんと動作します。人工のToy Data「TwoMoons」を2層DNN;Dense全結合ニューラルネットワーク(中間層1層)で学習します。滑らかな曲線の決定領域が得られます。
次の例と同じものをフロムスクラッチでコーディングするため,手書きで計算グラフをつくりました。行列演算は,すべて2次元配列にする必要があります。リストは縦ベクトルか横ベクトルにする必要があります。
【機械学習 TwoMoons 2層DNN Keras】
人工のToy Data「TwoMoons」をKerasでつくる2層DNN(中間層は1層)で学習します。Kerasでつくる最もシンプルなニューラルネットワークです。中間層がなければ決定領域が直線(線形)になるからです。
ノード数は,2-3-2 です。パラメータ数は,17です。二値分類の結果を決定領域で可視化してあります。
【機械学習 TwoMoons LightGBM train】
Kaggleで上位を狙える LightGBM は勾配ブースティングの1種です。Cross Val や GridSearch でも使えますが,人工のToy Data「TwoMoons」を一番シンプルな"lgb.train"でやります。LightGBM は軽くて速く,ビッグデータを扱えます。結果を決定領域で可視化しますが,明らかに過学習しています。それがLightGBMの短所です。
【機械学習 KaggleのTitanic】
【LightGBM GridSearch】
【DNN Dense層ニューラルネットワーク】
【EDA(Exploratory Data Analysis)の典型を紹介】

KaggleのTitanicをKaggleで上位を狙えるLightGBMとDNN Dense層ニューラルネットワークを紹介します。 TitanicのEDAとしては最も有名なものを紹介します。特徴量エンジニアリングのスキルがグンと上がります。
【KaggleのTitanicにある7つのサンプルコード】
【LightGBM】
【DNN Dense層ニューラルネットワーク】
【EDA(Exploratory Data Analysis)と特徴量エンジニアリングの見本】

KaggleのTitanicをKaggleで上位を狙える前処理とモデリングを紹介します。
【LightGBM.train,.cv,.GBMClassifierの使い分け】
【全データを使うクロスバリデーション・グリッドサーチをどのように実現する】
【パラメータチューニングをどうやるか?GridSearchCVを使うには?】
KaggleのTitanicをKaggleで上位を狙える前処理とモデリングを紹介します。3種類のLightGBMを使い分けるベストプラクティス。
【機械学習 MNIST LeNet ディープラーニング】
手書き数字のdata setの MNIST を10クラス(0~9)に分類します。モデルは1998年に発表されたLeNet-5(ルネット)です。Convが2層,Denseが3層ですが,accuracy: 0.986 とけっこう良い成績がでます。
LeNet(ルネット)は畳み込み層(Conv層)が導入された最初のディープラーニングですが, エラー率がサポートベクタSVMとほぼ互角だったので2012年までブレイクできませんでした。
【機械学習 CIFAR10 AlexNet ディープラーニング】
カラー写真のdata setの CIFAR10 を10クラスに分類します。モデルは ILSVRC2012 で1位になった AlexNet を使います。これでディープラーニングがブレイクしました。
パラメータがある層は11層です。Conv, Pool, Dense の他に BatchNormalization が使われています。パラメータ数は,8百万超ですが,accuracy: 0.60 とそれほど良くありません。
【Dogs vs. Cats ConvNets (2) ネットワーク図】
【Dogs vs. Cats ConvNets (3) データ拡張】

Chollet著を参考にして,典型的なConvNetsをモデリングしました。dataはKaggleのDogs vs. Catsのdataの一部を抜き出したものです。ネットワーク図で特徴マップの幅,高さ,深さの算出方法,フィルタのパラメータ数の算出方法を示しました。
正解率を上げるためデータ拡張を取り入れます。
Kaggleからdataをdown loadする方法は,3番目に添付した【Dogs vs. Cats ConvNets (1) ダウンサイズ】にあります。
【Dogs vs. Cats PretrainedCNN (1) 特徴抽出】
【Dogs vs. Cats PretrainedCNN (2) Fine Tuning】

画像データセットで正解率を上げるためには,学習済CNNを利用するのが効果的です。VGG16をImageNetのデータセット(1400万画像,2万2千クラス)を高性能GPUを使って長時間学習させたものを,特徴抽出器として使います。データ拡張あり,なしで行います。
正解率を上げるためファインチューニングを取り入れます。
Kaggleからdataをdown loadする方法は,3番目に添付した【Dogs vs. Cats ConvNets (1) ダウンサイズ】にあります。
【CIFAR10 InceptionV3 Fine Tuning】
画像データセット CIFAR10 を一から学習しても正解率を上げられません。学習済CNN InceptionV3 を利用してファインチューニングするのが効果的です。VGG16 に比べて軽くて高性能です。
【Breast Cancer SVM ConfusionMatrix ROC】
Breast Cancer data setを使い,サポートベクタSVMで二値分類します。Confusion Matrixの解釈,ROCの解釈,スケーリング,クロスバリデーション,グリッドサーチ,パイプラインのベストプラクティスです。
【Boston Housing 単回帰 多項式回帰】
Boston Housing data set を使い,目的変数を住宅価格とし,13ある説明変数から1つを選び,線形単回帰と多項式回帰を行います。ライブラリscikit-learnを使います。
【Boston Housing 重回帰 ランダムフォレスト回帰】
Boston Housing data set を使い,目的変数を住宅価格とし,13ある説明変数からいくつかを選び,線形重回帰を行います。あと非線形回帰を行います。ライブラリscikit-learnを使います。
【Wine 主成分分析 PCA ロジスティック回帰】
主成分分析 PCA は特徴抽出や次元削減の1種です。特徴抽出では,データが新しい特徴空間に変換または射影されます。scikit-learn を使います。PCA後にロジスティック回帰でクラス分類します。また,これらをパイプラインで一気通貫で処理します。

「pymc3」のインストールのトラブルで次のプログラムは再現できません

「階層ベイズモデルMCMC」
「GLM(一般化線形モデル)」
「GLMM(一般化線形混合モデル)」
を構築するには,「R」の方が最適と思われます。次のWebの参照をお勧めします
(「R」も「Jupyter Notebook」が使えます)

『R4.2 統計解析ベストプラクティス【階層ベイズ・ミックスモデル】』 https://yamakatsusan.web.fc2.com/index_statistics.html

【ベイズ統計モデル・MCMC】
AIエンジニア/データサイエンティストが使うベイズ統計モデルのベストプラクティスを紹介する。Python3 PyMC3 によるMCMC(Markov chain Monte Carlo)を使います。モデリング対象テーマ「メッセージ数に変化はあるか?」
【階層ベイズモデル・MCMC】
AIエンジニア/データサイエンティストが使う階層ベイズモデルのベストプラクティスを紹介する。Python3 PyMC3 によるMCMC(Markov chain Monte Carlo)を使います。モデリング対象テーマ「3つの水域がある上水道の水質の推定」
【ベイズモデル・MCMC チャレンジャー号】
AIエンジニア/データサイエンティストが使うベイズモデルのベストプラクティスを紹介する。Python3 PyMC3 によるMCMC(Markov chain Monte Carlo)を使います。スペースシャトル「チャレンジャー号」の悲劇の原因はOリング
【Numpy,Pandasの配列構造・配列演算】
【Boston HousingのDataFrame,Series,縦ベクトル,横ベクトル,リストの使い分け】

Numpy,Pandasの配列構造を解説します。リスト,マトリックス,テンソル,縦ベクトルをどうようにつくり,相互の変換はどのようにするのか。
機械学習の有名テーマBoston HousingのDataFrameのEDA,特徴量エンジニアリングを紹介します。
【Numpyの行列演算:線形代数のキモ】
Numpyの行列演算を解説します。逆行列,行列式,連立方程式,線形変換,基底の取替,線形変換と基底の取替,対角化
【Webページに数式を書く,LaTexとMathJax-LaTex】
mark down(Jupyter Notebook)の数式LaTex(ラテック,ラテフ),mark up(html)の数式MathJax-LaTex(マスジャックス・ラテック),数式のLaTexのコードを手書きの数式から生成するサイトを紹介する

 
Pythonで
パズルを解いてアニメで見る




Jupyter Notebookのipynb file, Pycharmのpy fileがダウンロード可
このHPのコンテンツはソースコードを含めて自由に使っていただいて結構です
Python3(Anaconda3) on Jupyter Notebook on Windows 11(仮想環境)
Python3(Anaconda3) on PyCharm on Windows 11(仮想環境)
間違いない方法を丁寧にこと細かく
「AIエンジニア/データサイエンティスト」になるために
マスターしたい必須スキルを詳細に紹介する
定番テキストも紹介する

Python3(3.10)で動くソースコード(.pyファイル .ipynbファイル)あります

「anaconda3」on .py「PyCharm」.ipynb「Jupyter Notebook」

出力された図が見つからない場合は図のアイコンがタスクバーにあります

【Python デザインパターン サンプルコード】
結城 浩「Java言語で学ぶデザインパターン入門」のサンプルをPython化しました。徹底解説します。
実際に動くスクリプトファイル,Jupyter Notebookあります

ABSTRACT FACTORYADAPTERBRIDGEBUILDERCHAIN OF RESPONSIBILITYCOMMANDCOMPOSITEDECORATORFACADEFACTORY METHODFLYWEIGHTINTERPRETERITERATORMEDIATORMEMENTOOBSERVERPROTOTYPEPROXYSINGLETONSTATESTRATEGY
TEMPLATE METHODVISITOR
【Python デザインパターン サンプルコード】
Mark Summerfield『実践 Python 3』のPythonサンプルを徹底解説します
実際に動くソースコードが原著者の Webサイト にあります

ABSTRACT FACTORYADAPTERBRIDGEBUILDERCHAIN OF RESPONSIBILITYCOMMANDCOMPOSITEDECORATORFACADEFACTORY METHODFLYWEIGHTINTERPRETERITERATORMEDIATOR ・ MEMENTO OBSERVER ・ PROTOTYPE PROXYSINGLETONSTATESTRATEGY
TEMPLATE METHOD ・ VISITOR
【オブジェクト指向プログラミング OOP の教科書】
【OOPの基本中の基本のベストプラクティス(コード集)】
【継承,ポリモーフィズム,カプセル化よりもクラス,オブジェクトこそ本質】

組み込みhtmlファイルは教科書に載っているいるような基本中の基本いわゆるベストプラクティスを集めたものである。Jupyter Notebookで実際に動作したものをhtml化した。
【3D プロット(3次元描画,3次元グラフ)】
とするとき,関数 を3次元グラフで表示しなさい.
【フーリエ変換(パワースペクトル)】
音楽CDのデジタル音声の仕様;サンプリング周波数 = 44.1kHz, 音声のメイン周波数を440Hzとしそれにノイズを付加した疑似信号を入力して パワースペクトルを描画しなさい.

【画像の幾何学的変換(lena)】
超有名な画像 lena を読み込み,
トリミング,シフト,回転,ズーム,マスクなどの変換処理をしなさい.

画像の変換処理が for文や if文が一切使わないでできるのである.これが Python のすごいところである.
【「宣教師と人食い人種」のパズルをPythonで解いた解答】
再帰呼び出しによるバックトラック・アルゴリズムを詳しく解説します。

実際に動く Python ソースコードがあります。ドラッグして 開発環境にコピペすればそのまま動きます。
図はExcel VBAでつくったものです。
【「8人の女王」のパズルをPythonで解いた解答】
再帰呼び出しによるバックトラック・アルゴリズムを詳しく解説します。

実際に動く Python ソースコードがあります。ドラッグして開発環境にコピペすればそのまま動きます。
【「8人の女王」のパズルをPythonで解いた解答
再帰呼び出しを使わないバックトラックを実現します。きれいなアニメーションが見られます。

実際に動く Python ソースコードがあります。ドラッグして開発環境にコピペすればそのまま動きます。Tkinterによるアニメーションで見ればコンピュータの試行が人間の思考のように見えます。
【紫藤氏の「8人の女王」Pythonプログラムを徹底解説】
この紫藤氏のプログラムのソースファイルは解答と描画に分かれている。描画の方はこのサイトの別記事で少し解説している。解答の方はたいへん美しいPythonプログラムである。

これを巧みなデバッグで走らせてみて詳細な動作を解説する。
【「マイクロマウス」の迷路をPythonで解いた解答】
経路探索アルゴリズムはなくバックトラックだけです。ただし,直進優先にしてあります。

実際に動く Python ソースコードがあります。ドラッグして開発環境にコピペすればそのまま動きます。Tkinterによるアニメーションで見ればコンピュータの試行が人間の思考のように見えます。
【「マイクロマウス」の迷路をPythonで解いた解答】
最短経路探索 A*(A-Star,エースター)アルゴリズムを採用しています。迷路の配列や文字壁を自動作成します。

実際に動く Python ソースコードがあります。ドラッグして開発環境にコピペすればそのまま動きます。Tkinterによるアニメーションで見ればコンピュータの試行が人間の思考のように見えます。
【「マイクロマウス」の迷路をPythonで解いた解答】
足立法の歩数マップが示す最短経路は,A*(A-Star,エースター)アルゴリズムと同じになりました。歩数マップのアルゴリズムをお見せします。

実際に動く Python ソースコードがあります。ドラッグして開発環境にコピペすればそのまま動きます。Tkinterによるアニメーションで見ればコンピュータの試行が人間の思考のように見えます。
【「8パズル」「15パズル」をPythonで解いた解答】
最短経路探索 A*(A-Star,エースター)アルゴリズムを使って「8パズル」「15パズル」を解きました。

実際に動く Python ソースコードがあります。ドラッグして開発環境にコピペすればそのまま動きます。こちらはアニメ化してありません
【「8パズル」「15パズル」をPythonで解いた解答】
双方向A*(A-Star,エースター)アルゴリズムを使って「8パズル」「15パズル」を解きました。

実際に動く Python ソースコードがあります。ドラッグして開発環境にコピペすればそのまま動きます。Tkinterによるアニメーションで見ればコンピュータの試行が人間の思考のように見えます。
【「ハノイの塔」のパズルをPythonで解いた解答】
大きさの異なる5枚の円盤を3本の杭を使って必ず小さいものを上にしながら移していき完全に移してしまうことができるだろうか。

実際に動く Python ソースコードがあります。ドラッグして開発環境にコピペすればそのまま動きます。Tkinterによるアニメーションで見ればコンピュータの試行が人間の思考のように見えます。
【Python3でArto Inkala氏の世界一難しい数独を解く】
Arto Inkala氏の「世界一難しい数独」の難易度は,25,31,36(2006, 2010, 2012年版)
世界一速いPeter Norvig氏のPython3プログラムが0.01秒代で解きます。
普通の探索アルゴリズムでは探索回数が膨大になり解くことができないので制約伝播アルゴリズムを使って驚異的な速度で解いている。 これを巧みなデバッグで走らせてみて詳細な動作を解説する。
【Peter Norvig氏のPython3で数独問題を無制限につくる】
Arto Inkala氏の「世界一難しい数独」の難易度は,25,31,36(2006, 2010, 2012年版)です。これは中くらいの難易度です。
プログラムは,問題を解く,問題を作る,候補の絞り込みを出力する,などいろいろできますが,設定ではなく,ハードコーディングです。難易度を指定できます。
絞り込みのあとに残る候補の個数を掛け合わせた数字は残りの探索回数であり,その指数が難易度となります。
【「ライフゲーム」をPythonで解いた解答】
格子状のセルラーがある規則に準じて誕生したり死滅したり生き残ったりします。最初の盤面が数個のセルラーから始まり盤面に一杯になったりすぐ消滅してしまったりどうなるかまったく予想がつきません。
実際に動く Python ソースコードがあります。ドラッグして開発環境にコピペすればそのまま動きます。Tkinterによるアニメーションで見ればコンピュータの試行が人間の思考のように見えます。


その他
このHPのコンテンツはソースコードを含めて自由に使っていただいて結構です
ディジタルPID ディジタルPIDの演算式の導出。ブロック図の書き方。プロセスからのAD変換,プロセスへのDA変換,PLC既成のPIDとの接続を設計

inserted by FC2 system