pyhealth
電子カルテ(EHR)や生理信号(EEG・ECG)などの臨床データを用いた機械学習モデルの開発・テスト・デプロイを包括的にサポートするヘルスケアAIツールキット。死亡率予測・再入院予測・薬剤推薦といった臨床予測タスクや、ICD・NDC・ATCなどの医療コーディングシステム、MIMIC-III/IV・eICU・OMOPなどのヘルスケアデータセットを扱う際、またRETAIN・SafeDrug・Transformer・GNNなどのディープラーニングモデルをヘルスケア領域に実装する際に使用します。
description の原文を見る
Comprehensive healthcare AI toolkit for developing, testing, and deploying machine learning models with clinical data. This skill should be used when working with electronic health records (EHR), clinical prediction tasks (mortality, readmission, drug recommendation), medical coding systems (ICD, NDC, ATC), physiological signals (EEG, ECG), healthcare datasets (MIMIC-III/IV, eICU, OMOP), or implementing deep learning models for healthcare applications (RETAIN, SafeDrug, Transformer, GNN).
SKILL.md 本文
PyHealth: ヘルスケアAIツールキット
概要
PyHealthは臨床機械学習向けの包括的なPythonライブラリで、ヘルスケア予測モデルの開発、臨床データ処理、医療コーディングシステムの操作、またはヘルスケア環境でのAIソリューションのデプロイに使用する専門的なツール、モデル、データセットを提供します。
このスキルを使用する場合
以下の場合にこのスキルを起動してください:
- ヘルスケアデータセットの操作: MIMIC-III、MIMIC-IV、eICU、OMOP、睡眠EEGデータ、医療画像
- 臨床予測タスク: 死亡率予測、病院再入院、入院期間、薬物推奨
- 医療コーディング: ICD-9/10、NDC、RxNorm、ATCコーディングシステム間の変換
- 臨床データ処理: 順序付きイベント、生理信号、臨床テキスト、医療画像
- ヘルスケアモデルの実装: RETAIN、SafeDrug、GAMENet、StageNet、EHR用Transformer
- 臨床モデルの評価: フェアネスメトリクス、キャリブレーション、解釈可能性、不確実性の定量化
主要機能
PyHealthはヘルスケアAIに最適化された5段階のモジュール式パイプラインで動作します:
- データ読み込み: 10以上のヘルスケアデータセットに標準化されたインターフェースでアクセス
- タスク定義: 20以上の定義済み臨床予測タスクを適用またはカスタムタスクを作成
- モデル選択: 33以上のモデル(ベースライン、ディープラーニング、ヘルスケア専門)から選択
- トレーニング: 自動チェックポイント、監視、評価によるトレーニング
- デプロイ: 臨床使用のためのキャリブレーション、解釈、検証
パフォーマンス: ヘルスケアデータ処理はpandasより3倍高速
クイックスタートワークフロー
from pyhealth.datasets import MIMIC4Dataset
from pyhealth.tasks import mortality_prediction_mimic4_fn
from pyhealth.datasets import split_by_patient, get_dataloader
from pyhealth.models import Transformer
from pyhealth.trainer import Trainer
# 1. データセット読み込みとタスク設定
dataset = MIMIC4Dataset(root="/path/to/data")
sample_dataset = dataset.set_task(mortality_prediction_mimic4_fn)
# 2. データ分割
train, val, test = split_by_patient(sample_dataset, [0.7, 0.1, 0.2])
# 3. データローダ作成
train_loader = get_dataloader(train, batch_size=64, shuffle=True)
val_loader = get_dataloader(val, batch_size=64, shuffle=False)
test_loader = get_dataloader(test, batch_size=64, shuffle=False)
# 4. モデル初期化とトレーニング
model = Transformer(
dataset=sample_dataset,
feature_keys=["diagnoses", "medications"],
mode="binary",
embedding_dim=128
)
trainer = Trainer(model=model, device="cuda")
trainer.train(
train_dataloader=train_loader,
val_dataloader=val_loader,
epochs=50,
monitor="pr_auc_score"
)
# 5. 評価
results = trainer.evaluate(test_loader)
詳細なドキュメント
このスキルには機能別に整理された包括的なリファレンスドキュメントが含まれています。必要に応じて特定のリファレンスファイルを読んでください:
1. データセットとデータ構造
ファイル: references/datasets.md
読む場合:
- ヘルスケアデータセットの読み込み(MIMIC、eICU、OMOP、睡眠EEGなど)
- Event、Patient、Visitデータ構造の理解
- 異なるデータ型の処理(EHR、信号、画像、テキスト)
- トレーニング/検証/テスト用データ分割
- タスク固有フォーマット用SampleDatasetの操作
主要トピック:
- コアデータ構造(Event、Patient、Visit)
- 10以上の利用可能なデータセット(EHR、生理信号、画像、テキスト)
- データの読み込みと反復処理
- トレーニング/検証/テスト分割戦略
- 大規模データセット向けパフォーマンス最適化
2. 医療コーディング変換
ファイル: references/medical_coding.md
読む場合:
- 医療コーディングシステム間の変換
- 診断コードの操作(ICD-9-CM、ICD-10-CM、CCS)
- 医薬品コードの処理(NDC、RxNorm、ATC)
- 処置コードの標準化(ICD-9-PROC、ICD-10-PROC)
- コードの臨床的カテゴリーへのグループ化
- 階層的医薬品分類の処理
主要トピック:
- システム内参照用InnerMap
- クロスシステム変換用CrossMap
- サポートされるコーディングシステム(ICD、NDC、ATC、CCS、RxNorm)
- コード標準化と階層トラバーサル
- 治療クラス別医薬品分類
- データセットとの統合
3. 臨床予測タスク
ファイル: references/tasks.md
読む場合:
- 臨床予測目的の定義
- 定義済みタスクの使用(死亡率、再入院、薬物推奨)
- EHR、信号、画像、またはテキストベースタスクの操作
- カスタム予測タスクの作成
- モデル用の入出力スキーマの設定
- タスク固有フィルタリングロジックの適用
主要トピック:
- 20以上の定義済み臨床タスク
- EHRタスク(死亡率、再入院、入院期間、薬物推奨)
- 信号タスク(睡眠段階分類、EEG分析、てんかん発作検出)
- 画像タスク(COVID-19胸部X線分類)
- テキストタスク(医療コーディング、専門科分類)
- カスタムタスク作成パターン
4. モデルとアーキテクチャ
ファイル: references/models.md
読む場合:
- 臨床予測用モデルの選択
- モデルアーキテクチャと機能の理解
- 汎用モデルとヘルスケア専門モデルの選択
- 解釈可能なモデルの実装(RETAIN、AdaCare)
- 医薬品推奨の操作(SafeDrug、GAMENet)
- ヘルスケア向けグラフニューラルネットワークの使用
- モデルハイパーパラメータの設定
主要トピック:
- 33以上の利用可能なモデル
- 汎用: ロジスティック回帰、MLP、CNN、RNN、Transformer、GNN
- ヘルスケア専門: RETAIN、SafeDrug、GAMENet、StageNet、AdaCare
- タスク型とデータ型別モデル選択
- 解釈可能性に関する検討事項
- 計算要件
- ハイパーパラメータチューニングガイドライン
5. データ前処理
ファイル: references/preprocessing.md
読む場合:
- モデル用臨床データの前処理
- 順序付きイベントと時系列データの処理
- 生理信号の処理(EEG、ECG)
- 検査値と生命徴候の正規化
- 異なるタスク型向けラベルの準備
- 特徴ボキャブラリーの構築
- 欠損データと外れ値の管理
主要トピック:
- 15以上のプロセッサ型
- シーケンス処理(パディング、切り詰め)
- 信号処理(フィルタリング、セグメンテーション)
- 特徴抽出とエンコーディング
- ラベルプロセッサ(二値分類、多値分類、多ラベル、回帰)
- テキストと画像の前処理
- 一般的な前処理ワークフロー
6. トレーニングと評価
ファイル: references/training_evaluation.md
読む場合:
- Trainerクラスによるモデルのトレーニング
- モデルパフォーマンスの評価
- 臨床メトリクスの計算
- 人口統計を通じたモデルフェアネス評価
- 臨床デプロイ向け予測のキャリブレーション
- 予測不確実性の定量化
- モデル予測の解釈
- 臨床デプロイメント用モデルの準備
主要トピック:
- Trainerクラス(train、evaluate、inference)
- 二値分類、多値分類、多ラベル、回帰タスク向けメトリクス
- バイアス評価用フェアネスメトリクス
- キャリブレーション方法(Platt scaling、temperature scaling)
- 不確実性定量化(conformal prediction、MC dropout)
- 解釈可能性ツール(注意の可視化、SHAP、ChEFER)
- 完全なトレーニングパイプラインの例
インストール
uv pip install pyhealth
必要要件:
- Python ≥ 3.7
- PyTorch ≥ 1.8
- NumPy、pandas、scikit-learn
一般的なユースケース
ユースケース1: ICU死亡率予測
目的: 集中治療室における患者死亡率の予測
アプローチ:
- MIMIC-IVデータセットの読み込み →
references/datasets.mdを読む - 死亡率予測タスクの適用 →
references/tasks.mdを読む - 解釈可能なモデルの選択(RETAIN) →
references/models.mdを読む - トレーニングと評価 →
references/training_evaluation.mdを読む - 臨床使用向け予測の解釈 →
references/training_evaluation.mdを読む
ユースケース2: 安全な医薬品推奨
目的: 薬物相互作用を回避しながら医薬品を推奨
アプローチ:
- EHRデータセット(MIMIC-IVまたはOMOP)の読み込み →
references/datasets.mdを読む - 薬物推奨タスクの適用 →
references/tasks.mdを読む - DDI制約によるSafedrugモデルの使用 →
references/models.mdを読む - 医薬品コードの前処理 →
references/medical_coding.mdを読む - 多ラベルメトリクスによる評価 →
references/training_evaluation.mdを読む
ユースケース3: 病院再入院予測
目的: 30日再入院のリスク患者の特定
アプローチ:
- マルチサイトEHRデータ(eICUまたはOMOP)の読み込み →
references/datasets.mdを読む - 再入院予測タスクの適用 →
references/tasks.mdを読む - 前処理でのクラス不均衡の処理 →
references/preprocessing.mdを読む - Transformerモデルのトレーニング →
references/models.mdを読む - 予測のキャリブレーションとフェアネス評価 →
references/training_evaluation.mdを読む
ユースケース4: 睡眠障害診断
目的: EEG信号から睡眠段階を分類
アプローチ:
- 睡眠EEGデータセット(SleepEDF、SHHS)の読み込み →
references/datasets.mdを読む - 睡眠段階分類タスクの適用 →
references/tasks.mdを読む - EEG信号の前処理(フィルタリング、セグメンテーション) →
references/preprocessing.mdを読む - CNNまたはRNNモデルのトレーニング →
references/models.mdを読む - 段階別パフォーマンスの評価 →
references/training_evaluation.mdを読む
ユースケース5: 医療コード変換
目的: 異なるコーディングシステム間での診断の標準化
アプローチ:
- 包括的なガイダンスについて
references/medical_coding.mdを読む - ICD-9、ICD-10、CCS間の変換にCrossMapを使用
- コードを臨床的に意味のあるカテゴリーにグループ化
- データセット処理との統合
ユースケース6: 臨床テキストからICDコーディング
目的: 臨床ノートから自動的にICDコードを割り当て
アプローチ:
- 臨床テキスト付きMIMIC-IIIの読み込み →
references/datasets.mdを読む - ICDコーディングタスクの適用 →
references/tasks.mdを読む - 臨床テキストの前処理 →
references/preprocessing.mdを読む - TransformersModel(ClinicalBERT)の使用 →
references/models.mdを読む - 多ラベルメトリクスによる評価 →
references/training_evaluation.mdを読む
ベストプラクティス
データ処理
-
常に患者単位で分割: データ漏洩を防ぐため、複数の分割に同じ患者が現れないようにする
from pyhealth.datasets import split_by_patient train, val, test = split_by_patient(dataset, [0.7, 0.1, 0.2]) -
データセット統計を確認: モデリング前にデータを理解する
print(dataset.stats()) # 患者数、来院数、イベント数、コード分布 -
適切な前処理を使用: プロセッサをデータ型に一致させる(
references/preprocessing.md参照)
モデル開発
-
ベースラインから開始: シンプルなモデルでベースラインパフォーマンスを確立
- ロジスティック回帰: 二値分類/多値分類タスク用
- MLP: 初期ディープラーニングベースライン用
-
タスク適切なモデルを選択:
- 解釈可能性が必要 → RETAIN、AdaCare
- 薬物推奨 → SafeDrug、GAMENet
- 長いシーケンス → Transformer
- グラフ関係 → GNN
-
検証メトリクスを監視: タスク向け適切なメトリクスを使用し、クラス不均衡を処理
- 二値分類: AUROC、AUPRC(特にまれなイベント向け)
- 多値分類: macro-F1(不均衡時)、weighted-F1
- 多ラベル: Jaccard、example-F1
- 回帰: MAE、RMSE
臨床デプロイメント
-
予測をキャリブレーション: 確率の信頼性を確保(
references/training_evaluation.md参照) -
フェアネスを評価: 人口統計グループ間でバイアスを検出
-
不確実性を定量化: 予測の信頼区間を提供
-
予測を解釈: 臨床的信頼のため注意重み、SHAP、またはChEFERを使用
-
徹底的に検証: 異なる期間またはサイトからの保持テストセットを使用
制限事項と検討事項
データ要件
- 大規模データセット: ディープラーニングモデルは十分なデータ(数千患者)を必要
- データ品質: 欠損データとコーディングエラーはパフォーマンスに影響
- 時間的一貫性: 必要に応じてトレーニング/テスト分割が時間的順序を尊重することを確認
臨床検証
- 外部検証: 異なる病院/システムのデータで検証
- 実証的評価: デプロイ前に実臨床環境で検証
- 臨床レビュー: 臨床医に予測と解釈をレビューさせる
- 倫理的検討事項: プライバシー(HIPAA/GDPR)、フェアネス、安全性に対応
計算リソース
- GPU推奨: ディープラーニングモデルのトレーニングを効率的に実行
- メモリ要件: 大規模データセットは16GB以上のRAMが必要な場合がある
- ストレージ: ヘルスケアデータセットは10~100GB程度
トラブルシューティング
一般的な問題
ImportErrorデータセット:
- データセットファイルがダウンロードされ、パスが正しいことを確認
- PyHealthバージョンの互換性を確認
メモリ不足:
- バッチサイズを削減
- シーケンス長を削減(
max_seq_length) - グラデーション累積を使用
- データをチャンク単位で処理
パフォーマンス低:
- クラス不均衡を確認し、適切なメトリクスを使用(AUPRCとAUROC)
- 前処理を確認(正規化、欠損データ処理)
- モデル容量またはトレーニングエポック数を増加
- トレーニング/テスト分割のデータ漏洩を確認
トレーニングが遅い:
- GPUを使用(
device="cuda") - バッチサイズを増加(メモリ許可範囲内)
- シーケンス長を削減
- より効率的なモデルを使用(TransformerではなくCNN)
サポートの取得
- ドキュメント: https://pyhealth.readthedocs.io/
- GitHubイシュー: https://github.com/sunlabuiuc/PyHealth/issues
- チュートリアル: 7つのコアチュートリアルと5つの実践的パイプラインがオンライン利用可能
例: 完全なワークフロー
# 完全な死亡率予測パイプライン
from pyhealth.datasets import MIMIC4Dataset
from pyhealth.tasks import mortality_prediction_mimic4_fn
from pyhealth.datasets import split_by_patient, get_dataloader
from pyhealth.models import RETAIN
from pyhealth.trainer import Trainer
# 1. データセット読み込み
print("MIMIC-IVデータセットを読み込み中...")
dataset = MIMIC4Dataset(root="/data/mimic4")
print(dataset.stats())
# 2. タスク定義
print("死亡率予測タスクを設定中...")
sample_dataset = dataset.set_task(mortality_prediction_mimic4_fn)
print(f"生成されたサンプル数: {len(sample_dataset)}")
# 3. データ分割(データ漏洩防止のため患者単位で分割)
print("データを分割中...")
train_ds, val_ds, test_ds = split_by_patient(
sample_dataset, ratios=[0.7, 0.1, 0.2], seed=42
)
# 4. データローダ作成
train_loader = get_dataloader(train_ds, batch_size=64, shuffle=True)
val_loader = get_dataloader(val_ds, batch_size=64)
test_loader = get_dataloader(test_ds, batch_size=64)
# 5. 解釈可能なモデルを初期化
print("RETAINモデルを初期化中...")
model = RETAIN(
dataset=sample_dataset,
feature_keys=["diagnoses", "procedures", "medications"],
mode="binary",
embedding_dim=128,
hidden_dim=128
)
# 6. モデルをトレーニング
print("モデルをトレーニング中...")
trainer = Trainer(model=model, device="cuda")
trainer.train(
train_dataloader=train_loader,
val_dataloader=val_loader,
epochs=50,
optimizer="Adam",
learning_rate=1e-3,
weight_decay=1e-5,
monitor="pr_auc_score", # 不均衡データ用AUPRCを使用
monitor_criterion="max",
save_path="./checkpoints/mortality_retain"
)
# 7. テストセットで評価
print("テストセットで評価中...")
test_results = trainer.evaluate(
test_loader,
metrics=["accuracy", "precision", "recall", "f1_score",
"roc_auc_score", "pr_auc_score"]
)
print("\nテスト結果:")
for metric, value in test_results.items():
print(f" {metric}: {value:.4f}")
# 8. 解釈用の注意機構を伴う予測を取得
predictions = trainer.inference(
test_loader,
additional_outputs=["visit_attention", "feature_attention"],
return_patient_ids=True
)
# 9. 高リスク患者を分析
high_risk_idx = predictions["y_pred"].argmax()
patient_id = predictions["patient_ids"][high_risk_idx]
visit_attn = predictions["visit_attention"][high_risk_idx]
feature_attn = predictions["feature_attention"][high_risk_idx]
print(f"\n高リスク患者: {patient_id}")
print(f"リスクスコア: {predictions['y_pred'][high_risk_idx]:.3f}")
print(f"最も影響力のある来院: {visit_attn.argmax()}")
print(f"最も重要な特徴: {feature_attn[visit_attn.argmax()].argsort()[-5:]}")
# 10. デプロイメント用にモデルを保存
trainer.save("./models/mortality_retain_final.pt")
print("\nモデルが正常に保存されました!")
リソース
各コンポーネントの詳細情報については、references/ディレクトリの包括的なリファレンスファイルを参照してください:
- datasets.md: データ構造、読み込み、分割(4,500語)
- medical_coding.md: コード変換と標準化(3,800語)
- tasks.md: 臨床予測タスクとカスタムタスク作成(4,200語)
- models.md: モデルアーキテクチャと選択ガイドライン(5,100語)
- preprocessing.md: データプロセッサと前処理ワークフロー(4,600語)
- training_evaluation.md: トレーニング、メトリクス、キャリブレーション、解釈可能性(5,900語)
合計包括的ドキュメント: モジュール式リファレンスファイル全体で約28,000語。
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- davila7
- ライセンス
- MIT
- 最終更新
- 不明
Source: https://github.com/davila7/claude-code-templates / ライセンス: MIT
関連スキル
agent-browser
AI エージェント向けのブラウザ自動化 CLI です。ウェブサイトとの対話が必要な場合に使用します。ページ遷移、フォーム入力、ボタンクリック、スクリーンショット取得、データ抽出、ウェブアプリのテスト、ブラウザ操作の自動化など、あらゆるブラウザタスクに対応できます。「ウェブサイトを開く」「フォームに記入する」「ボタンをクリックする」「スクリーンショットを取得する」「ページからデータを抽出する」「このウェブアプリをテストする」「サイトにログインする」「ブラウザ操作を自動化する」といった要求や、プログラマティックなウェブ操作が必要なタスクで起動します。
anyskill
AnySkill — あなたのプライベート・スキルクラウド。GitHubを基盤としたリポジトリからエージェントスキルを管理、同期、動的にロードできます。自然言語でクラウドスキルを検索し、オンデマンドでプロンプトを自動ロード、カスタムスキルのアップロードと共有、スキルバンドルの一括インストールが可能です。OpenClaw、Antigravity、Claude Code、Cursorに対応しています。
engram
AIエージェント向けの永続的なメモリシステムです。バグ修正、意思決定、発見、設定変更の後はmem_saveを使用してください。ユーザーが「覚えている」「記憶している」と言及した場合、または以前のセッションと重複する作業を開始する際はmem_searchを使用します。セッション終了前にmem_session_summaryを使用して、コンテキストを保持してください。
skyvern
AI駆動のブラウザ自動化により、任意のウェブサイトを自動化できます。フォーム入力、データ抽出、ファイルダウンロード、ログイン、複数ステップのワークフロー実行など、ユーザーがウェブサイトと連携する必要があるときに使用します。Skyvernは、LLMとコンピュータビジョンを活用して、未知のサイトも自動操作可能です。Python SDK、TypeScript SDK、REST API、MCPサーバー、またはCLIを通じて統合できます。
pinchbench
PinchBenchベンチマークを実行して、OpenClawエージェントの実世界タスクにおけるパフォーマンスを評価できます。モデルの機能テスト、モデル間の比較、ベンチマーク結果のリーダーボード提出、またはOpenClawのセットアップがカレンダー、メール、リサーチ、コーディング、複数ステップのワークフローにどの程度対応しているかを確認する際に使用します。
openui
OpenUIとOpenUI Langを使用してジェネレーティブUIアプリを構築できます。これらはLLM生成インターフェースのためのトークン効率的なオープン標準です。OpenUI、@openuidev、ジェネレーティブUI、LLMからのストリーミングUI、AI向けコンポーネントライブラリ、またはjson-render/A2UIの置き換えについて述べる際に使用します。スキャフォルディング、defineComponent、システムプロンプト、Renderer、およびOpenUI Lang出力のデバッグに対応しています。