投稿

Translate

#57 Section 12 回帰(1)教材の用意&PyCaretのインストール/インポート

イメージ
ここからは、『 回帰 』のコードの解説に入ります。 → スライドは、クリックすると拡大できます! PyCaretが予測の途中でどのような処理や計算をしているかを体験していきましょう。 PyCaretのホームページ (1) まずは、教材の準備をしていきます。 PyCaretのホームページから『DOCS』をクリックし、さらに『Tutorials』をクリックします。 PyCaretのホームページ (2) 『Tutorials』にある『Regression』の『Quick start』の部分を今回の教材にします。 『Regression』は、 ①教師あり学習 の一種で、連続する値の傾向をもとに予測を行うことです。日本語で、『 回帰 』と言います。 PyCaretのホームページ (3) 『Colab』をクリックすると、『Colab』の『Tutorial - Regression.ipynb』という名前のノートブックが現れます。この状態では、まだGoogleドライブに保存されているわけではありませんので、『ドライブにコピー』をクリックします。 その後、ノートブックの名称を『 Regression 』に変更、ファイル位置の移動(ここでは、『機械学習』フォルダーに移動)等を行います。教材の準備は完了です。 PyCaretのインストール/インポート     Colabには、PyCaretがインストールされていませんので、先ずはPyCaretをインストールしましょう。 その前に、『 #56 分析環境再構築/コラボのPythonバージョンアップ 』を参考にして、Pythonのダウングレードを行います。 通常の『!pip install paycaret』では、すべてのものをインストールすることはできません。 paycaretに続けて[full]を書くとフルバージョンをインストールすることができます。 ColabでPyCaretをインポートすると、数分経過してから下記のように『セッションを再起動する』とのアラームが出てきます。Colabは最新に近いパーツで動いていますが、PyCaretはその最新のパーツに対応していないためです。 でも、ご安心を! 『セッションを再起動する』をクリックして、再起動すれば、PyCaretは問題なく稼働します。 PyCaretをインポ...

#56 分析環境再構築/コラボのPythonバージョンアップ

イメージ
本の出版を終え、久しぶりにブログを再開しようとコラボのノートブック『Binary Classification』を開けて、実行するとPycaretがインストールできないではありませんか! 調べてみると、Google Colabのリリースノートに「8月27日 Python runtimes upgraded to Python 3.12.」となっています。 Pycaretは、Python 3.10までしかサポートされていませんので、インストールができないわけです。 https://pycaret.gitbook.io/docs/learn-pycaret/faqs#does-pycaret-work-with-all-os-and-python-versions これでは、下記のブログ記事に相当するコードが動かなくなります。 #48 Section4 分類(1) 教材の用意&PyCaretのインストール/インポート ↓ #54 Section10 分類(7)モデルの保存・再利用 せっかくAutoMLの世界に触れた読者のみなさまをがっかりさせてしまわないように、そして、猫のタローがやる気を失わないように、いろいろと試してみました。 (1) コラボで、Pythonをダウングレードする →geminiに聞きながら、いろいろとやってみたのですが、出来ませんでした・・・。成功したコードを知っている人がいれば、教えてください。 (2) venv(ブイエンブ)で仮想環境を各々の読者に作ってもらう →Pythonバージョン3.3以降の標準ライブラリとして提供されているvenvで、各々の読者が仮想環境を作成して、コードの体験をしてもらうことも選択肢にありましたが、やめました。仮想環境の作成で、疲れてしまう人が出てきますから。 (3) Dockerを使う →Dockerは、持ち運べる仮想環境を作成するもので、私が作った仮想環境でコラボとほぼ同様な操作性を持つ「Jupyter Notebook」でコードを書いたり、結果を表示することができます。WindowsでもDockerを使えると書いてあったので、勉強中です。ハードルが高いです・・・。 いろいろとgeminiに聞いていくうちに、geminiが手軽な方法を提案してくれました。コラボに実装されている「 ランタイム バージョン 」を選択する方...

『データサイエンス チュートリアル オフィシャル テキスト』2冊目を出版しました!

イメージ
 『テキスト1』では、データの読み込みとデータの確認の方法を体験しました。それは、あまり人の目に触れるものではありませんでした。『テキスト2』では、集計とグラフ描画を中心に体験していきます。それらは、プレゼン資料に使われて、人々に説明したり、説得するために使われます。少し、難易度が上がりますが、それだけやりがいもあるのではないでしょうか。 ★データサイエンス チュートリアル オフィシャル テキスト 2 https://amzn.to/4g2Uqsq

このブログが書籍になりました! 第1弾!

イメージ
データサイエンスに興味を持ってはいるが、データサイエンスに本気でダイブしようかどうか迷っている方々、そのような方々に分析を体験してみる機会を提供するために、この ブログ「データサイエンス チュートリアル」、およびYoutube「 DataScience_for_everyone 」を始めました。 知識がまったくなくても、見よう見まねで、基本的なプログラムを書いてみて、その楽しさがわかったら、本格的な学習に進むきっかけになればと思ったのが始めた動機です。 うれしいことに、読者や視聴者の中には、初めから、基本的なプログラムをしっかり身に付けたいという要望を持つ方も現れました。 そこで、ブログと動画をまとめたテキストを出版することにしました。 第1弾は、『1st Step ビッグデータの読み込みとデータの確認』です。  → 購入はこちら ブログや動画を、スキマ時間や通勤時間にスマホで見聞きし、週末など1時間程度時間が取れる時に、このテキストを参考にして、実際にコラボを起動してプログラムを書いてみる。そんな使い方を想定しています。 慣れてきたら、このテキストにある参考資料を読んで、このテキストのプログラムをちょっと変えてみて、コラボで動くかどうか確認してみる事も、スキルを身に付けるためにとても有効です。自分なりのコラボ・ノートブックを作りましょう。 もちろん、初めからこのテキストに取り組んでも構いません。 どのような使い方であれ、このテキストが最初の一歩になり、あなたがデータサイエンスを身に付け、それがリスキリングにつながり、より充実した人生を送れるようになることを願ってやみません。

中学生がPythonを学べば生涯収入はどうなる?

イメージ
「 ソフト開発未経験のおじさんがプログラミングを学ぶ意味はあるか 」というタイトルで始まった「大森敏行のプログラミングで行こう」という日経XTECHの連載の最新号は下記のテーマでした。 *********** 中学生がPythonを学べば生涯収入が5000万円増、ChatGPTが示した計算の根拠 https://xtech.nikkei.com/atcl/nxt/column/18/00682/070200191/ 大森敏行さんが調べた結果・・・ 小学生のうちにScratchでプログラミングの基本的な概念を学び、中学生になったらPythonを学ぶと生涯収入は、どのように変わるかをChatGPTに聞いた結果、計算根拠とともに出てきた差額は+約5,000万円だったとのこと。 差額が5,000万円は、微妙に少ないのではないかと感じたので、ChatGPTに再び聞くと、この計算結果は保守的に考えた場合であり、再計算すると、 Pythonが分かる人は5~6億円 、 Pythonが分からない人は2~3億円 で、約3億円の差がつくという結果がでたとのこと。 Pythonが分かるだけではここまでの差は出ず、それを伸ばして生かす学習環境・機会・継続があって初めて数億円単位の差になるとの条件がついたが・・・ 大森さんは、「プログラミングは向いている人と向いていない人がはっきり分かれる技能だ。プログラミングに向いていない人に無理強いするのは本当によくない。重要なのは継続だ。Pythonに少しでも興味を持ったなら、 楽しく学習を続けていって欲しい と思っている。」とコメントしている。 *********** なるほど、ChatGPTに進路について教わりました。凄いね! でも、中学生からPythonを学んでもいいのかなぁ~ タローは、義務教育が終わってから学んだ方がいいと思っています。友達と遊ぶ時間を大切にして欲しいですからね。あと、子供の時は、あんまり忙しいと、やる気がなくなってしまいますから。  

#55 Section11 分類(8)まとめ

イメージ
さて、分類の最後です。 初めての Pycaret はいかがでしたか? 出力された評価結果、分析結果を詳しく説明しましたが、最低限、下記のコードを書けば、機械学習の『 二項分類 』で分析することができます。 再利用の「load_model」関数を入れても全部で16行! コードを書くのが億劫だと思っている方でも、1行のコードで、どんどん出力が出ますので、さまざまな種類の機械学習を体験していきましょう。 次回からは、 回帰 (Regression)を体験していきます!

#54 Section10 分類(7)モデルの保存・再利用

イメージ
さて、せっかく最も性能が良いモデルを見つけたので、それを保存して、またの機会に使えるようにしておきましょう。 pycaretの『save_model』関数を使用し、下記のコードによって、選択したモデル(「best」)を保存することができます。  save_model(選択したモデルの名前, '保存するモデルの名前') 今回は、「my_first_pipeline」という名前で保存します。 「my_first_pipeline」は、現在の作業ディレクトリに、モデルのIDに *.pkl の拡張子が付いたファイル(* pickle形式 )として保存されます。これは、後でいつでも利用することができます。 pickle形式のファイルは、path引数で指定した場所、または今回のようにpath引数を省略した場合は現在の作業ディレクトリに保存されます。関数の出力や、ファイルシステムを直接確認することで、保存場所を特定できます。ただし、 pickleファイルはテキスト形式ではなく、コンピュータが効率的にデータを読み書きするためのバイナリ形式で保存されています。そのため、Googleドライブの検索エンジンでは、ファイルの内容をテキストとして解析することが難しく、 キーワードで検索することができません 。 save_model関数の主なアウトプットは、モデルだけでなく、データの前処理方法全体が一つのパイプラインとして保存されたこと、そしてそのパイプラインに含まれる個々の処理ステップの詳細と、最終的な学習済みモデルの種類とハイパーパラメータ、そして保存されたファイルの名前を示しています。この情報があれば、保存されたパイプラインがどのような処理を行い、どのようなモデルを含んでいるかを後で正確に把握することができます。 モデルの出力にでてくる英語の文章の説明を下記の2枚のスライドにまとめました。 わずか数行で、このような処理をしていたことに驚きです! 「 load_model(‘保存したモデル名‘) 」を使うと、「my_first_pipeline」という名前で保存したモデルを読み込む(ロードする)ことができます。ここでは、読み込んだモデルを「loaded_best_pipeline」と名付け直しています。 出力は、下図の青い線で囲んだものになります。 この出力の「 ▶ 」をク...

#53 Section9 分類(6)予測

イメージ
今回は、compare_models関数で求めた最も性能が良かったモデル(lr/logistic Regression)で、予測をしてみましょう。 下記のコードは、setup()で分割したテストデータ(231行×9列/Transformed test set shape)に対して予測した結果を返してくれます。 holdout_pred = predict_model(モデル名) 宣言した『holdout_pred』のholdoutは、モデルを評価するデータを作るためにデータを分割することを意味しています。別に何と宣言してもいいのですが、わかりやすいように『holdout_pred』としておきましょう。 出力は、主な評価指標となります。 『compare_models』関数を使って、モデルを評価した際の評価指標一覧と比べて、どうでしょうか?正解率(Accuracy)とF1-score (F1)はやや下がっていますが、数値が高いまま維持されています。 次に、予測結果の性能評価をした「holdout_pred」の最初の5行を見てみましょう。 holdout_pred.head() 出力を見ると、テストデータに 予測ラベル ( prediction_label )と 予測確率 ( prediction_score )が付与されていますね。 予測ラベル(prediction_label)は、予測されたインスタンスのクラスを表しています。「0」が糖尿病陰性、 「1」が糖尿病陽性でしたね。 また、予測確率(prediction_score)は、インスタンスが予測されたクラスである確率を表しています。 最も性能の良かったモデル「best」(lr/logistic Regression)をget_data('diabetes')で読込んだ「data」(訓練データ+テストデータ)すべてにあてはめて性能を確認してみます。 まずは、 「data」 の列名「Class variable」を削除し、 モデルをあてはめるデータを作成します。 「data」をコピーして、列名「Class variable」を削除し、「new data」と宣言します。次に「new data」の最初の5行を確認してみます。 下記のコードを使って、「new_data」で予測をしてみましょう! predic...

#52 Section8 分類(5)モデルの分析(2)

イメージ
さて、モデルのパフォーマンスを分析するパートの続きを始めます。 実は、PyCaretでは、「plot_model関数」を使わなくても、下記の「evaluate_model関数」を使うことで、様々なモデルの評価を可視化(グラフ化)することができます。 下図のように、 evaluate_model(best) と短いコードを書き、実行すると、21種類の描画(Plot type)を選択するボタンが現れます。 何もしない状態では、「Pipline Plot」が選択され、機械学習モデルを構築する際にPyCaretが自動的に行った前処理を視覚的に表現しています。SimpleImputerは欠損値の補完、 CleanColumnNamesはデータセットの列名の整形をしたことを表しています。 各ボタンをクリックすると、それぞれの評価を可視化したグラフが現れます。下記は、 『plot_model』関数を使って表示させたグラフですね。 グラフの中には、直感的に理解しにくいものも含まれています。4th STEPでは、クラスの予測をすることが最大の目的ですので、今は理解できなくても構いません。 予測結果が思わしくない場合、データサイエンティストや統計に詳しいメンバーとディスカッションする時にこのグラフが威力を発揮します。それぞれの グラフを見て、スライドの緑文字のように感じることができれば 一人前です。 一通り、どんなものか、解説していきます。 *********** 1. Hyperparameters パラメーター(Parameter)は、モデルが訓練データから自動的に学習し、調整していく重みやバイアスなどの値です。それに対して、ハイパーパラメータ(Hyperparameter)は、学習前に人手で設定するアルゴリズムの挙動を制御する値です。つまり、パラメータはモデルが学習によって得たもの、ハイパーパラメータはモデルの学習の前に設定するものとなります。 Hyperparametersでは、PyCaretが ハイパーパラメータをどのように設定したかを表示 してくれます。 本来、分析者が経験等に基づいて決めるものですが、PyCaretはいい感じに決めてくれます。 次スライドでハイパーパラメーターの解説をしますが、PyCaretには、このハイパーパラメーターをチューニングして一番結果が良いもの...