投稿

Translate

#49 Section5 分類(2) 前処理

イメージ
ここからは、『setup』関数によるいくつかの前処理機能を体験していきます。  まずは、モジュールのインポートと setup 関数の実行です。 下記の公式『Tutorials』の下記のコードは、1行目は解説で、2行目は、PyCaretのうち分類に用いるモジュール『 classification 』をインポートしています。このモジュールは、 二項分類 または 多項分類 に使用できます。さらに、 『 setup 』関数によるいくつかの 前処理 機能、18以上のすぐに使える アルゴリズム と、学習済み モデルの性能を分析 するためのプロットが用意されています。 ワイルドカード 「 * 」を使うとモジュールで公開されているすべての関数や変数などがインポートされて使えるようになります。 3行目は、PyCaretの分類モジュールに含まれる『setup』関数で、欠損値処理、データ分割などの前処理を行っています。 # import pycaret classification and init setup とあり、setup関数を初期化するような説明となっていますが、『init』は初期化という意味ではなく、機械学習の実験を開始するための準備作業全体を指していますから、ここではsetup関数を実行して前処理を行うという意味で理解しておきましょう。 setup 関数について詳しく説明します。setup関数は、最小限、『 分析するデータ名 』→ data 、『 目的変数 』→ target 、『 後で再現可能にするための擬似乱数設定 』→ session_id という引数が必要になります。 session_idは、無くても動きますが、毎回違う結果が出てくることがありますので固定しておきましょう。 また、その他の引数の主なものは、下記のとおりです。 『 ignore_features 』→無視したい特徴量のリスト 『 normalize  True 』→Trueに設定するとデータが正規化される 『 train_size 』→訓練データのサイズ、例:=0.7では70%が学習用データとして使用される 『 log_data 』→Trueにすると、学習およびテストデータがCSV形式で保存される これが引数でできるなんて!ちょっとワクワクしませんか? その他は@Asagumo63さ...

#48 Section4 分類(1) 教材の用意&PyCaretのインストール/インポート 

イメージ
ここからいよいよコードの解説に入ります。 → スライドは、クリックすると拡大できます! PyCaretが予測の途中でどのような処理や計算をしているかをしっかりと学んでいきましょう。 まずは、教材の準備をしていきます。 PyCaretのホームページから『DOCS』をクリックし、さらに『Tutorials』をクリックします。 『Tutorials』にある『Binary Classification』を今回の教材にします。 【PyCaretホームページ】  https://pycaret.org/ 【DOCS】  https://pycaret.gitbook.io/docs 【Tutorials】  https://pycaret.gitbook.io/docs/get-started/tutorials 『Tutorials』にある『Binary Classification』は、 教師あり学習 に属する 分類 の一種で、各データを2つのカテゴリー、例えば、「陽性」or「陰性」、「出荷可能」or「出荷不可」のように二つのグループに分類するものです。日本語では、 二項分類 と呼びます。 次のような用途で使われます。      1.臨床検査で患者が特定の疾病に罹患しているか否かで分類する      2.ある製品が出荷できる品質か、それとも捨てるべきかの判断      3.あるページや記事を検索結果に含めるか否か      4.メールがスパムかどうかを判定する 『Binary Classification』の『Colab』をクリックすると、『Google Colaboratory(以後「Colab」と省略)』の『Tutorial - Binary Classification』という名前のノートブックが現れます。この状態では、まだGoogleドライブに保存されているわけではありませんので、『 ドライブにコピー 』をクリックします。 『Tutorial - Binary Classification.ipynb のコピー』となっていますので、『Binary Classification』というファイル名にしておきましょう。 また、...

#47 Section3 分析ツール

イメージ
機械学習を学ぶ理由、機械学習の分類を解説してきましたが、Section3では、使用する分析ツール『 Pycaret (パイカレット)』について説明します。 → スライドは、クリックすると拡大できます! Pythonの機械学習ライブラリでは、 scikit-learn (サイキット・ラーン)が定番で、アルゴリズムチートシートで適切な手法を選択できたり、豊富なアルゴリズムを利用できます。 【アルゴリズムチートシート】 https://scikit-learn.org/stable/machine_learning_map.html 一方、Pycaretは、機械学習モデルの設計や構築のプロセスを自動化してくれる技術『 AutoML (Automated Machine Learning)』をサポートしていますので、scikit-learn等の他の機械学習ライブラリでは数百行に及ぶコードを記述する必要があるところを、PyCaretでは数行に短縮!できます。 実は、Pycaretは、 scikit-learnのラッパー でもあります。 『 データサイエンスチュートリアル オフィシャルテキスト2 』では、seabornを使いましたが、Pycaretはもう少し大掛かりなラッパーです。scikit-learn、XGBoost、LightGBM、CatBoost、spaCy、Optuna、Hyperopt、Ray等の様々なライブラリのラッパーとして機能します。 seabornは、matplotlibよりも簡単に、自動的に見栄えのするグラフを描いてくれましたが、それはPycaretでも同様です。 機械学習は、下記の枠で囲んだステップを経て最適なモデルで予測を行いますが、そのステップはほぼ一つの関数でコードを書くことができます。 PyCaretは、驚くほど、短いコード(大抵は1行)でコードを書くことができます。 これは、Pycaretの公式ドキュメントに記載があるように、Pycaretは『 シチズンデータサイエンティスト 』のために開発されたものだからです。Pycaretを使うのは、 多くのコードを使った精密な分析が目的ではなく、広く用いられる手法で出た結果を解釈し、ビジネスで活用できる知見・洞察を得ることが目的 です。 【公式ドキュメント】 https://pycaret.gitboo...

#46 Section2 機械学習とは?

イメージ
コンピュータがデータを読み込むことで自動的にルールやパターンを見出し、その結果を活かして分類や予測を行う仕組み全体のことを機械学習といいます。 今回は、機械学習とはどんなものか、どんな手法があるのかを解説します。 → スライドは、クリックすると拡大できます! 機械学習はAIを実現するための重要な要素であり、AIの一部であると言えます。 そこで、まずは、AIの歴史を振り返ってみましょう。 人工知能(AI)の研究は1950年代から続いていますが、その過程ではブームと冬の時代が交互に訪れています。それぞれのブームの終了時に、AIに関する悲観的な意見が出てブームは終焉し、研究者にとっては冬の時代が訪れました。 ● 第一次 AIブーム終焉:迷路やチェスなどの簡単なゲームをさせることができるなど様々な開発がなされましたが、人々が期待していた「現実に起きている問題を自分で解決」するまでには至らず、1970年代になると冬の時代を迎えます。 ● 第二次 AIブーム終焉:ブームを迎えて登場したMYCINという医療のエキスパートシステムでは、患者の診断は約65%の正解率を誇っていました。「専門医の診断」の正解率(約80%)には及ばないものの、「細菌感染の専門家でない医師」よりは優秀な成績でした。しかし、「エキスパートシステムの開発に膨大な手間と時間がかかる」、「人間が使う曖昧な表現をエキスパートシステムではルール化できない」等の理由により、発展に歯止めがかかり、ブームは終焉を迎えます。 2010年頃から、 機械学習 や * 表現学習 からなる 第三次 AIブームが始まり、これは現在も続いています。 * 表現学習 :画像・映像・音声・テキストなどの非構造化データでは、人間の判断で特徴量を選択することが困難です。そこで、機械学習自身に特徴量を発見させるアプローチが考え出されました。この表現学習を行う機械学習のアルゴリズムの一つを深層学習(ディープラーニング)と言います。 また、現在は、ChatGPTに代表される 生成AI による 第四次 のブームが同時並行で進んでいます。 「4th STEP 機械学習」では、深層学習(ディープラーニング)の基礎となる機械学習を学んでいきます。 機械学習 は、これまで経験や勘に頼っていた判断をデータに基づいて行うことで、客観的な分析や予測を可能にします。また、...

#45 Section 1 機械学習がもたらすもの

イメージ
今まで、「ビッグデータの読み込みとデータの確認」、「集計とグラフ描画」、オープンデータのWebスクレイピングやデータ整形を学ぶための「応用編 医療」を学習してきたみなさま。 ここからは、いよいよ4th STEP「 機械学習 」に進んでいきます。 どのような機械学習を選択してデータ解析すればよいか提案 ができること、そしてその コードを書けること により、データサイエンティストとしてかなり有利な条件でのリスキリングが可能となります。 → スライドは、クリックすると拡大できます! Section 1 機械学習がもたらすもの 4th STEPの学習を始める前に、なぜ機械学習を学ばなくてはならないかを理解するために、データを知識・知恵に変えるためのフレームワークである「 DIKWモデル 」について説明します。 DIKWモデルでは、データサイエンスのステップを データ 、 情報 、 知識 、 知恵 の4つに分類します。 具体的に、ある学級のテストの点数に関して説明していきます。 ①データ :1学期中間試験のテストの答案用紙の束のように、単なる数字や記号の集まりをデータと呼びます。 ②情報 :①のデータをDataFrameやEcelにまとめ、合計点や偏差値などのその他の要約統計量を求めたものを「②情報」と呼びます。グラフを描き、わかりやすく可視化することもあります。今までのデータサイエンス チュートリアルはここまで対象として学んできました。 ③知識 :さらにデータが増えて、1学期期末試験、2学期中間試験などのデータが入手できると、どのような事を考えるでしょうか?個々に3学期の期末試験の点数を予測したり、テストの結果を元に、文系に進学した方がよいのか、それとも理系の方がよいのか、知りたいと思うことでしょう。情報から規則性や見解などを導き出したものを「③知識」と呼び、機械学習や深層学習という手法が必要となってきます。 ④知恵 :深い知識が豊富にあり、様々な問題に直面した時に発揮される問題解決能力や発想力を「④知恵」と呼びます。ちなみに、人間と同レベルの、あるいはそれを超える知恵を持つAIを「強いAI」と呼びますが、これはまだ実現していませんので、知恵は人間のみが持っているものです。 以上まとめると、前のスライドに戻って、このようになります。別の例も示しておきました。 このようにデー...

コーディングを学ぶのは時間の無駄?

イメージ
AIがすべてのプログラミングコードを生成するようになるので「コーディングを学ぶのは時間の無駄」か? 最近、この問題に関するまとめニュースが、Gigazineに掲載されていました。 https://gigazine.net/news/20250331-dont-study-coding-replit-ceo/ Replitのアムジャド・マサドCEOは、「すべてのコードがAIによって生成されるようになるでしょう。私が想定している最適化のシナリオでは、AIエージェントはどんどん進化し続けると思います。そうなると、『コードを学ぶ価値はあるか』という問いの答えは、以前とは違って『いいえ』となります。コードの学習は時間の無駄になると思います」と述べたことが紹介されています。 ちなみに、Replitが開発したReplit Agentは、自然言語プロンプトからコードを自動生成できるクラウドベースのAIアシスタントです。 また、このブログ「データサイエンス チュートリアル」でも分析環境に Google Colab を使っていますが、AIアシスタントの機能がコラボで日々、増大しています。例えば… ● 新しいコードセルにうっすらと「AIで生成します」という表示がされ、そこをクリックすると、AIが次に行うべきコードを教えてくれる。 ● 「エラーの説明」ボタン→その内容は的確で、そしてコードの変更点も教えてくれます。 ある程度の用語を知っていれば、コラボがやってくれます。エラーも直してくれます。そしてその精度も高まってきているように感じます。 このような事実から、コードを学ぶ価値は必要無いという意見が出るのは、とてもよくわかります。 私も、20数年前にデータマイニングに身を投じた際、コードをゴリゴリ書いたのではなく、GUI(グラフィカル ユーザー インターフェース)で動く Visual Mining Studio (Rの元になったS言語を使っています!)を使っていました。 でも、新機能は開発が間に合わなくて、GUIを書く必要があり、メーカーの開発者にはずいぶんお世話になりました。人工知能学会でも、その開発者と一緒に 発表 させていただきました。 その後、2018年ごろに、副業で使うためにPythonを始めました。VMSはそれなりにライセンス料が高いので(当時、1台にインストールするのに300...

Supplement 2 DataFrameの比較

 forループで一気に作成したデータを縦型に変形し、本編で作成したデータ「naihuku」と同じ形に整形していきます。本編を思い出して、復習します。 その後、2つのDataFrameが同じものかどうか確認します。 ■ プログラムを 解説 したスライドをご覧ください! Supplement 2 DataFrameの比較 by @Cat_Taro ■ 自分のコラボのノートブックで確認してみましょう。下記の使用した全コードを参照してください。 all_files = glob.glob('/content/drive/MyDrive/Colab Notebooks/医療/データ2/*.csv') all_files list = [] for i in all_files: list.append(pd.read_csv(i)) df_all = pd.concat(list, ignore_index=True) df_all df_all2 = pd.melt(df_all , id_vars=['薬効分類', '薬効分類名称', '医薬品コード', '医薬品名' ,'薬価基準収載医薬品コード', '薬価', '後発品区分','年度','剤型_場所'] , value_vars=['01', '02', '03', '04', '05' , '06', '07', '08', '09', '10', '11','12', '13' , '14', '15', '16', '17','18', '19', ...

Supplement 1 Webスクレイピングの一括処理

「#33 Section 2 URLからデータを読み込む」、「#34 Section 3 データの修正・保存」に関しては、URLからひとつづつExcelファイルを読み込み・修正・保存していきましたが、 forループ を用いて一括で処理することができます。 レベルが高くなりますが、このような処理はよく遭遇しますので、チャレンジしていきましょう。 コードセルに多くの行のコードが並ぶと、ちょっとビビってしまいますね。 はじめから、このようなコードを書ける人はいないのでご安心を! みんな、先輩から教わったり、WEBやGitHubで見つけたコードをコピペして必要な修正を加えて、少しづつ慣れて、理解し、コードが描けるようになります。 見ただけで難しいと判断して放り出さず、解説の文章だけでも読んでみてください。 同じような処理 をすることがあったら思い出すことがあると思います。若干の修正を施し、「ctrl」+「enter」でコードが走った時には、爽快感とともに、あなたの実力もアップしているはずです。 ■ プログラムを 解説 したスライドをご覧ください! Supplement 1 Webスクレイピングの一括処理 by @Cat_Taro ■ 自分のコラボのノートブックで確認してみましょう。下記の使用した全コードを参照してください。 data = { "H26": [ ("https://www.mhlw.go.jp/file/06-Seisakujouhou-12400000-Hokenkyoku/0000139842.xlsx", "内服外来院内"), ("https://www.mhlw.go.jp/file/06-Seisakujouhou-12400000-Hokenkyoku/0000139844.xlsx", "内服外来院外"), ("https://www.mhlw.go.jp/file/06-Seisakujouhou-12400000-Hokenkyoku/0000139846.xlsx", "内服入院"), ], ……………...

#42 後発品比率の都道府県別年度推移

イメージ
いよいよ3rd STEPの最終回です。 前のSectionでは、令和2年度の都道府県別の薬剤費総額と対10万人当たりの薬剤費のグラフを同一画面で描画しました。日本では、医療費削減のために後発品(ジェネリック医薬品とも言います)の使用が推奨されています。そこで、薬剤費をドリルダウンして、後発品とその他に分け、金額ベースの後発品比率を求めていきます。 特に新しいプログラムはないのですが、今まで出てきたプログラムを思い出して復習していきましょう。 ■ まずは、下記の 動画 (8分18秒)をご覧ください。 ■ リンク先等を見たり、自分のペースで見たい方は、 下記の スライド を参照してください。 #42 後発品比率の都道府県別年度推移 by @Cat_Taro ★参考資料 ■ オープンデータを使った論文 https://icer.tokyo/materials/ndb_opendata_replication/ ■ 一般社団法人日本薬剤疫学会 https://www.jspe.jp/

#41 y軸が2つのグラフを描く

イメージ
今回は、y軸が2つのグラフを描くことにより、2つの集計結果の違いを一目で分かるようにします。 Pythonにおけるグラフ描画のライブラリライブラリ「matplotlib」を使うのですが、設定が細かいので上級編となります。 こんな感じで高度なグラフを描けるんだと頭の片隅にでも入れておいていただければ十分です。普段の分析業務をこなすには、seabornで事足りるはずです。 今回使用するライブラリ「matplotlib」には、下記の2つの流儀があります。 1.「 Pyplotインターフェース 」 MATLAB (マトラボ)というデータ解析やアルゴリズム開発、モデルの作成などに使用するプログラミング言語の機能をpythonでも使えるように導入された機能。簡単にプログラムを書くことができるが、グラフ描画の自由度は小さいプログラム。 2. オブジェクト指向インターフェース 何を操作の対象にするか明示的に指定する方式。「Pyplotインターフェース」で図を作っても、いざ細かい調整をしようとすると、結局オブジェクト指向インターフェースのやり方に従うことになりますので、ここでは、こちらを使います。 ※ ネット上には、matplotlibの「Pyplotインターフェース」で書かれたものと「オブジェクト指向インターフェース」で書かれたコードの二つが混在しています。コードを読む時には、気を付けましょう! ■ まずは、下記の 動画 (11分14秒)をご覧ください。 ■ リンク先等を見たり、自分のペースで見たい方は、 下記の スライド を参照してください。 #41 y軸が2つのグラフを描く by @Cat_Taro