explore-ml-data について
explore-ml-dataは、機械学習プロジェクト向けの探索的データ分析スキルです。ノートブック、HTMLレポート、簡潔な分析文書、JOURNALの索引を作成し、元データは読み取り専用に保ちます。
主な機能
- 01プロジェクト単位の探索的データ分析
- 02ノートブックとHTMLレポートの生成
- 03データファミリー別のTableReport
- 04ターゲットとリークの分析
- 05JOURNAL索引の更新
活用シーン
- 01機械学習モデリング前のデータ確認
- 02ターゲット分布と特徴量の関係の確認
- 03追加調査が必要なリーク候補の記録
- 04プロジェクトジャーナルへのデータ理解の記録
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ probabl-ai/ skills --skill explore-ml-dataインストール後、Claude Code で/explore-ml-dataを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
evals/evals.jsonreferences/cell_anatomy.mdextra_analyses.mdtemplates/data_analysis.mddata_analysis.pydatetime.pydrift.pyfamily.pyjoin_coverage.pymaterialize.pytarget_classification.pytarget_multioutput_regression.pytarget_regression.py詳細
ML データの調査
プロジェクト単位の探索的データ分析を1つ実施します。ユーザーが開けるノートブック、HTML レポート、それらを埋め込んだ短い data_analysis.md、および JOURNAL のインデックス行を作成します。
人間向けの文章
詳細:setup-workspace references/human_facing_prose.md。
ノートブックの Markdown、data_analysis.md、JOURNAL の文章、および # コメントでは、スキルのフレームワークや CLI、出力を生成したコマンドではなく、このデータセットについて説明します。質問、回答、最後の説明にも、スキル ID、G-* 名、ラッパー CLI ではなく、同じデータサイエンスの用語を使用します。
`` はサイトマーカーです。作成時のヒントはこのスキル内に置きます。style は ruff のみです。
成果物
| パス | 対象者 |
|---|---|
| raw data (anywhere) | ユーザー所有、読み取り専用 |
data_analysis/data_analysis.py | 人間向けノートブック — TableReport と ML ギャップのセル |
data_analysis/data_analysis_<slug>.html | 人間向け — TableReport ページ、ファミリーごとに1つ |
data_analysis/*.png | 人間向け — 示唆を示す図。概要確認には使用しない |
data_analysis/<slug>.html | 人間向け — Plotly(またはその他)の HTML。示唆に iframe で埋め込み |
data_analysis/data_analysis.md | 人間と後続のモデリング向け — TableReport の iframe、示唆 |
scratch/data_analysis/materialize.py | エージェント向け — 唯一の実行対象。gitignore 対象 |
scratch/data_analysis/<slug>.json | エージェント向け — ファミリーごとの TableReport.json()。gitignore 対象 |
scratch/data_analysis/extras.json | エージェント向け — tables[]、targets、リーク、png と html のパス |
| JOURNAL § Data understanding | インデックス:ステータス、2~4行の概要、リンク |
TableReport は、データ型、欠損状況、単変量分布、カーディナリティ、および上位のペアワイズ関連を担当します。追加のセルでは、重複、各ターゲットの分布、特徴量とターゲットの関係、リーク候補を扱います。同一ファミリーのターゲットを特徴量にしないでください。追加のセルで TableReport の内容を重複させないでください。
詳細:references/cell_anatomy.md。追加分析のレシピ:
references/extra_analyses.md。
次のステップへの案内
| 目的 | → 次へ |
|---|---|
| 最初の EDA(トリアージまたは自由記述) | → md を作成し、その後、5つの選択肢がある続行ボードへ |
| 続行時の選択 | → 事前定義の選択肢、クエリ、自動探索、またはプロットの説明。まだターンを終了しないでください |
| このステージを終了 | → 入力を完了/サイト/git のターン終了/triage-ml-task がインストールされている場合は実行 |
| EDA 完了後に方法論上の懸念がある | → G-DATA-ANALYSIS をスキップする。探索を続ける § 自動探索(懸念が明示されている場合は定型調査をスキップ) |
| データソースを変更した、または「X もプロットして」 | → data_analysis/data_analysis.* を上書きし、JOURNAL を更新 |
停止条件
- 最初にセットアップします。
python -m skore_skills statusを実行します。status.setup.pendingが空ではなく、status.skills.setup-ml-projectが true の場合は、setup-ml-projectを読み込んで停止します。このスキルは開始しません。 戻ってきたら続行します。このターン中に再度読み込まないでください。 そのスキルがインストールされていない場合は、保留中の項目を1行で示して 停止します。git init、scaffold、env initを勝手に実行しないでください。status.setup.envまたはstatus.setup.workspaceがdeclinedの場合は、1行で示して停止します。gitまたはeditableが辞退されている場合は再度尋ねず、続行します。手動でPROJECT_ROOTを定義したり、workspace のセットアップが保留中に ルートのJOURNAL.mdを書き込んだりしないでください。 - 生データは読み取り専用です。 ユーザーのファイルをクリーンアップ、書き換え、
再保存してはいけません。列やファイルを削除するようユーザーに指示してはいけません
(「drop it」)。リークは Open questions または
measureボードに記録します。クリーンアップはbuild-ml-pipelineで行います。 - 成果物は
data_analysis/配下に置きます。 生データの読み込み元はどこでもかまいません。 - 質問には必ず背景を添えます。 このスキルで AskUserQuestion を行う前に、 回答によって何が許可されるのか、根拠となる事実(例:ファイル名、 候補の列、提案するファミリーのスラッグ)と、各選択肢の動作を 2~4行で示します。ファイルリンクは補足であり、背景の代わりにはなりません。
- G-DATA-ANALYSIS の実行/スキップ。 AskUserQuestion を使います。「早く進める」
という希望はスキップの理由になりません。スキップの場合は
python -m skore_skills eda stamp --status skippedを実行して停止します。日付を入力してはいけません。 スキップが有効なのはdata_analysis/data_analysis.mdが存在しない場合 (status.data_analysisがmissingまたはskipped)だけです。 ステータスがpresentの場合、skippedを書き込まないでください。 作成済みの分析はそのまま残ると伝え、探索を再実行する (data_analysis/data_analysis.*を上書きします)か、現状のままにするかを提示します。 ユーザーが再実行に同意するまで上書きしてはいけません。EDA が完了していても、 名前の挙がった方法論上の懸念がある場合は、このゲートをスキップします。 スキップ時にsite buildを実行してはいけません。build-ml-pipelineでは、Evaluate の前に未フィットのスナップショットのビルドを 引き続き実行します。 data_analysis/data_analysis.pyの前に G-TABULAR を確認します。status.policy.tabularを使います。未設定の場合はchoose-python-library(pandas を推奨)を実行してから、そのライブラリに加えてskrub、matplotlib、seabornをadd-python-packageで追加します。 暗黙のデフォルトを設定してはいけません。そのskrubのインストール時に Graphviz の修復診断が出ても、この分析を中止しません。診断内容を1行で引用して 続行します。レンダリング可能なグラフが必要なのは、build-ml-pipelineの未フィットのスナップショットです。G-TABULAR、 ターゲット、またはファミリーについて未回答の質問がある場合は、 質問後に停止します。「pandas を仮定した Deliverable A」であっても、 デフォルトのノートブックを作成してはいけません。ユーザーが選んだ追加項目に 必要な場合を除き、sklearn、skore、pytest をインストールしないでください。- ターゲット。 列が明らかな場合は、JOURNAL の Status またはユーザーのプロンプトから
推測します。名前が挙がっている出力列はすべて含めます。それ以外の場合は
AskUserQuestion
allow_multiple(列名と「no target yet」)を使って 停止します。ノートブックはまだ作成しません。「no target yet」は 他の選択肢と併用できません。特徴量とターゲットの区別やリークを、 常に表示する次のステップとして列挙しないでください。異なる値が多い数値列は 回帰です。ラベルが少ない列、または数値以外のラベルを持つ列は分類です。 列が1つの場合は、そのターゲット用のスニペットを1つだけ使います。 回帰列が2つ以上ある場合は、1つのマルチ出力回帰として扱います。templates/target_multioutput_regression.pyを1回だけ追加します。 分類列が複数ある場合、または分類と回帰が混在する場合は、 skore がレポートできる単一の結合モデルではありません。列ごとにタスクを記録し、 そのスニペットは追加しないでください。「no target yet」または辞退の後はTARGETS=[]とします。TableReport と重複のみを使います。 ポリシーキーを永続化しないでください。 - 訓練/テスト分割は行いません。 その選択は後ほど modeling-decisions のロックで
決定します。EDA 中に分割しないでください。ファイルがすでに訓練テーブルと
テストテーブルに分かれている場合は、概要で両方の名前を挙げ、結合しないでください。
探索で評価方法を決めることはありません。
リークのセルは、すべてのターゲットを含む生データのファミリーに対する定性的な
フラグです。それ以外のファミリーでは
templates/family.pyのみを使います (TableReport と重複のみ)。ターゲットを含まないファミリーには、 リーク、ターゲット、二変量のセルを設けないでください。 結合したモデリングテーブルを永続化しないでください。 - ノートブックの前にファミリーを確認します。 データファイルが複数ある場合は、
AskUserQuestion でグループ分けを尋ねます(推奨はありません)。
選択肢は、提案したグループ分けを使う/各ファイルを個別にプロファイルする/
自分でグループ分けを説明する、です。拡張子、名前のパターン、または
ヘッダー/スキーマの確認結果からクラスターを提案し、汎用的なスラッグ
(
family_a)を使います。ファミリーを勝手に作成する場合は、質問でスラッグを 提案するのではなく、回答後に作成します。ファイルが1つの場合は、この質問を省略します。 - このターンで 使用するシンボルに対して
api getを実行します (キャッシュヒットも含みます)。TableReport.json()のキーは変動するため、.get(...)を使います。 data_analysis/data_analysis.pyは1つだけ作成します。 確認済みのファミリーごと (またはユーザーが指定した場合はファイルごと)に、TableReport のセルを繰り返します。 再実行するとその場で上書きされます。デフォルトのノートブックには、 これらのテンプレートと、一致するターゲット用スニペットのみを含めます。 追加のヒストグラム、sns.heatmap/関連性行列、ユニーク値の比率 (nunique()/n)、列の辞書、report.json()のセルを追加しないでください。 重複を表示するセルでは、重複数だけを出力します。一意率やnunique()/nは 出力しません。リークはコメントではなくテンプレートの表に記録します。 ターゲットが1つの場合は、templates/target_regression.py/target_classification.py内で seaborn のdisplotを使い (記述統計とターゲットの図を1つ)、ファセット付きのrelplotを1つ作成してbivariate_grid.pngを出力します。回帰ターゲットが複数ある場合は、templates/target_multioutput_regression.pyを1回だけ使い (target_distributions.png、bivariate_targets.png)ます。 それに加えて単一ターゲット用のスニペットをコピーしたり、 TableReport の隣に別のターゲットヒストグラムを追加したりしないでください。 最後の式はgにします。デフォルトの経路ではmatplotlib.pyplotをimportしないでください。- モデルを設計しないでください。 示唆事項は
data_analysis.mdのみに記載します。 data_analysis/を gitignore に追加しないでください。ユーザーから依頼された場合は、setup-gitを使って特定の生データのパターンを無視します (デフォルトでは何もしません)。
事前確認
- [ ] Setup: pending empty | load setup-ml-project and stop
- [ ] Detect: status.data_analysis present|skipped|missing
- [ ] G-DATA-ANALYSIS: run | skip when the analysis file is absent (skip → JOURNAL only, STOP). present → keep or re-run; never write skipped
- [ ] G-TABULAR + add frame lib + skrub + matplotlib + seaborn
- [ ] Targets: inferred | AskUserQuestion | none
- [ ] Families: one file | AskUserQuestion grouping
- [ ] Load plot-ml-figure if installed; place
data_analysis/data_analysis.py from the template (edit to
the live path); do not execute it
- [ ] scratch/data_analysis/materialize.py once → HTML, figures,
<slug>.json per family, extras.json
- [ ] notebook fill when policy.notebooks is true
- [ ] Author data_analysis.md + JOURNAL
- [ ] Preview `site build` if `policy.site` (skip on G-DATA-ANALYSIS skip)
- [ ] AskUserQuestion five options, including Close (skip if user
already closed the turn)
チェックを入れてから、対応するステップを実行します。根拠を添えてチェックリストを再出力します。Close の後にのみターンを終了します。
実行前
G-DATA-ANALYSIS、G-TABULAR、対象、およびファミリーの解決後、最初の書き込みの直前に、自然な文を1~3文ですぐに出力します。これはローカル計算であり、確認済みのテーブルファミリー全体をプロファイリングし、該当する重複/ターゲット/二変量/リーケージ分析を実行して、data_analysis/ の HTML/図と scratch/data_analysis/ の JSON 事実情報を書き出すことを伝えます。データの範囲とレポートのパスを明記します。説明として事前確認をそのまま出力してはいけません。
コストは推測ではなく、事実に基づいて説明します。TableReport とリクエストされたプロットの処理量は、テーブルのサイズとファミリーの数に応じて増減します。測定済みの所要時間がすでにわかっている場合を除き、所要時間はこれらの要素によって異なると伝え、分数をでっち上げてはいけません。このプレビューは一度だけ出力し、編集のたびに繰り返してはいけません。新たに選択された追加項目によって作業が実質的に変わる場合にのみ更新します。
自動探索/方法論の検討はLLM によるリサーチであり、モデルのフィッティングやテストではありません。記録済みの EDA に基づいて推論すること、スクラッチのリサーチメモを作成する場合があること、ローカル分析を行う前に測定方法の選択ボードで停止することを伝えます。
必須のゲートが未完了の場合は、実行される可能性のある作業をプレビューしますが、ノートブックへの書き込みや実行は行いません。
手順(実行経路)
-
まず
TARGETSと各列に対応するタスク(classification|regression)を確定します。リストが空ならターゲットはありません。 2つ以上の回帰列がある場合は、マルチ出力回帰です。 ファミリーを確定します(上記の停止条件を参照)。適合する場合はtemplates/data_analysis.pyをコピーしてから編集します —使用しない分岐は貼り付けないでください。最初のファミリーは、 ターゲットがある場合、そのすべてを含むファミリーです。<pkg>、<LOAD_RAW_DATA>(そのファミリーのシャードをメモリ内で 連結したもの。_source_fileは任意)、<slug>(Pythonの 識別子)を置き換えます。追加のファミリーごとにtemplates/family.pyを使います(<OTHER_SLUG>、<LOAD_OTHER>)。ターゲットが1つの場合はtemplates/target_regression.pyまたはtemplates/target_classification.pyを追加し、最初のファミリーの 読み込みセルでTARGETを設定します。回帰ターゲットが2つ以上の 場合はtemplates/target_multioutput_regression.pyを一度だけ 追加し、TARGETSをそのリストに設定します。ターゲットがない、 分類列が複数ある、または混在している場合は、これらのスニペットを 追加せず、TARGET/TARGETSも割り当てません。ファミリーに 日時列がある場合は、そのファミリー用にtemplates/datetime.pyを 使います(数値ターゲットがちょうど1つでない限り、relplotセルは 削除します)。列名が共通するファミリーが2つある場合は、<OTHER_FRAME>を指定してtemplates/drift.pyを使います。 スキーマが重複しない場合は、デフォルトのパスではドリフト分析を 行いません。ここでは結合範囲のセルを追加しないでください。 生成されたノートブックにif TARGET、if TASK、OTHER = None、空の日時ループ、または「このセルをスキップ」が 含まれていないことを確認します。図のセル(この最初の書き込みも 含む)を書く前に、インストール済みの場合はplot-ml-figureを 読み込みます。Markdownの内容はこの分析に関するものにします。 書き込み後にpython -m skore_skills styleを実行します。 このファイルは実行しないでください。 -
templates/materialize.pyをscratch/data_analysis/materialize.pyにコピーします。<pkg>、<TARGETS>、<TASKS>、および<ANALYSIS>ブロックを置き換えます。 読み込み、TableReport.write_htmlの呼び出し、図またはHTMLの 保存は、人が読むファイルと同じ内容にします。<TARGETS>は列名の リストです(ターゲットがない場合は[])。<TASKS>はclassification|regressionの並行リストで、共通スニペットが ない列も含めます。ファミリーごとに読み込みは1回です。FAMILIESを(slug, raw)として、FRAMEをすべてのターゲットを 含むpandasのフレームとして割り当てます。末尾はそのままにします。 このファイルを1回実行します。 TableReportのHTML、図、<slug>.json、extras.jsonが出力されます。data_analysis/data_analysis.pyは実行しないでください。notebook convertもcells runも実行しないでください。<slug>.jsonとextras.jsonを読みます。 -
status.policy.notebooksとstatus.policy.siteを読みます。 notebooksがtrueの場合は、python -m skore_skills notebook fill data_analysis/data_analysis.pyを実行します。siteもtrueの場合に 限り、--htmlを追加します。fillはファイルを実行しません。 必要なのはjupytextとnbformatであり、nbclient、ipywidgets、 IPythonではありません。notebooksがnullまたはfalseの場合は、 policyを変更せず、fillも実行しません。実行するのは引き続きmaterialize.pyのみです。 -
templates/data_analysis.mdからdata_analysis/data_analysis.mdを作成します。概要 (ファミリーごとにiframeを1つだけ配置し、それ以外は何も置かない)、 モデリングへの示唆(特徴量エンジニアリングの候補を含める)、 未解決の質問を記述します。レポートと図は埋め込み、リンクには しません。またはHTML iframe (<iframe src="<slug>.html" …>)は、概要には置かず、裏付けとなる 示唆のそばに配置します。概要にはTableReportのみを載せます。extras["pngs"]とextras["htmls"]の各パスを埋め込み、それぞれに 対応するJSONファイル(またはノートブックの要約表)の数値を引用する 文を添えます。そのような文で活用されない図は保存しないでください。 主張は両方のJSONファイルとHTMLに基づかせます。列を捏造しないで ください。 -
JOURNAL § データ理解の表:Statusセルには
python -m skore_skills eda stamp --status doneを実行します。 日付を手入力しないでください。短い要約(形状、各ターゲットの バランスまたは偏り、モデリングに影響する所見を1つまたは2つ)と、 Report[data_analysis/data_analysis.md](../data_analysis/data_analysis.md)を 記載します。 スキップする場合のパス:eda stamp --status skippedのみ。 スキップ時はfillもgit end-turnも実行しないでください。 -
継続ボード — ユーザーがすでにターンを終了している場合 (「EDA is done」、「close the turn」)を除きます:
policy.siteがtrueで、export-ml-siteがインストール済みの場合は、 まずpython -m skore_skills site build --if-staleを実行します。 それ以外は1行でスキップします。site buildがmkdocs-material is requiredでエラーになった場合は、add-python-packageでmkdocs-materialを読み込み(エージェント)、 もう一度だけビルドします。pixi add/uv addは実行しないで ください。そのスキルが見つからない場合、または再試行も失敗した 場合は、エラーを1行で記載します。ビルドエラーは明記しますが、 ゲートを失敗扱いにしないでください。ビルドが実行された場合、 またはサイトが最新と報告された場合は、ウェブサイトが更新されたことと、 ブラウザーでreport.htmlを開くよう伝えます。data_analysis.mdやhtml/data_analysis.htmlの名前は出さないでください。このプレビュー ではnotebook fillもgit end-turnも実行しないでください。 その後、選択肢を1つ選ぶAskUserQuestionを行います。推奨も事前選択も しません。最初のmdの後は必ず質問します(トリアージからここに 案内された場合も含みます)。このボードでは「extra-analyses」や 「standard extra analysis」と言わないでください。ラベル サブタイトル 事前定義された追加オプションを選択 該当する項目のみを指定してください:相互作用/pairplot、PCA、仮説検定、サブグループ、時系列、テキストまたは地理、結合キー/カバレッジ(2 つ以上のファミリー) 探索を拡張するクエリを入力 ノートブックに追加する分析(テーブル、検定、またはプロット)を説明してください データと問題に関連する自動探索 探索中の問題とデータに関連する詳細な調査を行います プロットを説明 グラフを指定すると、そのためのセルを追加します 閉じる この段階を終了します。分析を追加しないでください。 閉じる → ターン終了(ユーザー向けの終了)。
data_analysis.mdを書き換えないでください。 残りの 4 つの選択肢は 探索を続ける に進み、同じ選択肢についてこのボードを再度表示しないでください。重複/ターゲット/リークは、「未解決の質問」だけでなく、「モデリングへの影響」に含めてください。
元のプロンプトですでに追加項目(例:PCA)が指定されている場合は、そのセルをステップ 1 に含め、その追加項目について再度質問しないでください。
インポートの失敗 → add-python-package。回避策を使わないでください。
更新(すでに done で、ユーザーが追加のプロットを求めている場合):人が編集するファイルと <ANALYSIS> ブロックを編集し、materialize.py を 1 回実行して、ノートブックがオンになったら入力し、その後ステップ 4~6 に進みます。G-DATA-ANALYSIS を再度質問しないでください。
status.data_analysis が存在する間の方法論に関する懸念(リーク/「これを調査して」):G-DATA-ANALYSIS をスキップし、ノートブックを上書きしないでください。その懸念を指定して 探索を続ける の §「自動探索」に進みます(定型の追加分析アンケートはスキップします)。
図のセルを作成または書き換える前に、インストールされていれば必ず plot-ml-figure を読み込んでください。テンプレートを理由に、プロット作成の担当ワーカーを省略してはいけません。スキルがない場合は、スキップする旨を 1 行で示し、それでもこのツリーに従ってください(統計的なプロットは seaborn、単純なチャートは pandas、最後に matplotlib)。ノートブックのセル内で plt.close を呼び出さないでください。PNG を保存してから、セルの出力として図/グリッドを残してください。
探索を続ける
別個のエクスポート工程や git end-turn はありません。人間が編集するファイルを編集すると <ANALYSIS> も編集され、その後 materialize.py が一度だけ実行され、ノートブックが有効な場合は fill が実行されます。md が書き換えられるまで、サイトを二度目にビルドしないでください。このターン中は、チャット、チェックリスト、ボードのいずれでも「extra-analyses」や「standard extra analysis」と言わないでください。ファイル references/extra_analyses.md はパスとしてのみ名前を挙げてもかまいません。
継続ボードはすでに尋ねてあります。選ばれた項目に対応してください。続けるか終了するかを尋ねず、この選択についてボードを繰り返さないでください。
-
事前定義オプション — レシピファイル
references/extra_analyses.md(パスのみ。チャットで「extra-analyses」と言わないでください)。独自のallow_multipleボードを使用します。質問の最終行は正確に次のとおりです。選びたいものをすべて選択してください。 この行の後には何も書かないでください。図のセルを実行する前に、インストールされていればplot-ml-figureを読み込んでください。 -
クエリ — ユーザーの分析リクエストを待ちます。セルを追加してください(図がある場合は
plot-ml-figureを読み込みます)。定型の調査アンケートではありません。その後、更新手順を実行します。 -
自動探索 — インストールされていれば、ステージ
data_analysisと、以下の定型アンケートの懸念事項を指定してresearch-ml-practiceを読み込みます。スキルがない場合は、1 行でスキップを伝え、別のsite buildは行わずに 5 項目のボードを再度提示します。インテークは尋ねないでください。JOURNAL、data_analysis.md(示唆と未解決の質問)、scratch/data_analysis/extras.jsonをコンテキストとして渡します。ワーカーは検索の前に問題のクラスを抽象化します(データセット固有の正式名称は使いません)。定型の質問:JOURNAL にある問題の種類(分野、タスク、制約)と、EDA ですでに確認された構造の種類(データセットの正式名称ではありません)を踏まえると、このような未加工のテーブルに対して、今後も実施する価値のある追加測定は何ですか?
scratch/research/survey-<slug>.mdを読みます。内容をそのままチャットに出さず、チャットで要約します。ツールが実行されなかった場合は、指定された懸念事項(リークの場合は、由来/スコアリング時に利用可能かどうか)について 2 文で述べ、そのうえでmeasureボードを提示します。スクラッチファイルを読んだと主張しないでください。未加工の列を削除するよう指示しないでください。すでにノートブックにない、出典が確認できるmeasureの追加項目のみを対象に、AskUserQuestionをallow_multipleで提示します。どの選択肢も最初から選択済みにしないでください。質問の最終行は正確に次のとおりです。選びたいものをすべて選択してください。 この行でメッセージを終えます。この後にチェックリストを付けないでください。 レシピがある場合はextra_analysesに対応付け、ない場合はカスタムセルを作成します。declare/evaluate/confirmはこのボードに含めず、未解決の質問は調査結果ではなく助言として扱います。調査メモに出典付きで記載されていない限り、未解決の質問をボードに転記しないでください。ユーザーが方法論上の懸念(リーク/「これを調査して」)を指定した場合は、定型アンケートを省略します。その懸念を深掘りのために渡し、その後、同じ
measureボードを提示します。ツールが実行されなかった場合は、上記と同様に要約します。未加工の列を削除するよう指示しないでください。 -
プロットの説明 — インストールされていれば
plot-ml-figureを読み込み、セルを追加します。 -
.pyを変更する選択肢の場合:styleを適用し、<ANALYSIS>ブロックを一致するように編集して、materialize.pyを一度だけ実行します。その後、notebooksがtrueの場合はnotebook fillを実行します(--htmlを使用するのはsiteもtrueの場合のみです)。JSON/PNG/HTML からdata_analysis.mdを書き換えます(示唆は結果に基づきます)。その後、policy.siteが有効ならsite buildでプレビューし、5 項目のボードを再度提示します(実行経路の手順 6)。分野別のチェックリストを作り出さないでください。
ディスパッチ
triage-ml-task から呼び出されます(explore-the-data インテント、または data_analysis が存在しない状態でモデリングの依頼に対して explore-first を実行する場合)。ユーザーの自由入力からも呼び出されます。
呼び出し先:add-python-package、api get、G-TABULAR 用の choose-python-library/スタック、追加分析の調査または特定の方法論に関する懸念をユーザーが求めている場合は、インストール済みなら research-ml-practice、デフォルトのノートブック、追加項目、自由入力、research-measure のいずれの場合も、図のセルを作成する前にインストール済みなら plot-ml-figure、data_analysis.py の後に style。
パッケージが必要ですか?インストール済みなら add-python-package を読み込み、そうでなければパッケージ名を示して停止します。ここでは env add を実行しないでください。
ターンの終了
このブロックは Close の後(またはユーザーがすでにターンを終了している場合)にのみ実行します。探索を続ける場合はここに進みません。このブロックで data_analysis.md を書き換えないでください。
ユーザー向けの終了メッセージ
ユーザー向けのメッセージは、短い説明とリンクです。Pre-flight ではなく、Markdown のダンプでもなく、JOURNAL の表のセルだけでもありません。このメッセージでは site build、--if-stale、その他のラッパーコマンドを挙げないでください。
- 最初に説明 — このステージでの調査結果を 2~6 文で説明します。モデリングへの示唆/JSON の事実(形状、ターゲット、モデリングに影響するリークや重複)に基づいて記述します。存在しない列を作り上げないでください。
data_analysis.mdを貼り付けないでください。 - こちらを開く —
site buildが実行されたか、サイトが最新であると報告された場合は、ウェブサイトが更新されたことを伝え、ブラウザーで開くための[report.html](<workspace>/report.html)をリンクします。Markdown ファイルやhtml/data_analysis.htmlを挙げないでください。今回のステージでは Skore ロケーターを付けません。サイトがビルドされていない場合は、更新されたと主張せず、Markdown ファイルも挙げないでください。 - 正規化トークンはその次 — EDA では該当なし(G-REPORT-LOCATOR/G-AUDIT-FINDING なし)。
このスキルが終了処理を担います。探索を続ける場合は 1~2 文の要約にとどめます(ビルドが実行された場合は、ウェブサイトが更新されたことを伝え、ブラウザーで report.html を開くよう案内します)。fill/git end-turn には進みません。
policy.notebooks が true で、export-ml-notebook がインストール済みであり、今回の実行で最新のノートブックがすでに書き出されていない場合は、python -m skore_skills notebook fill data_analysis/data_analysis.py を実行します。policy.site も true の場合は --html を付けます。run-path のステップ 3 で生成されたノートブックは最新のため、ユーザーが Close を選んだだけでは再度 fill を実行しないでください。成果物がすでにこの人が作成したファイルに基づいている場合は、materialize.py を再実行しないでください。それ以外の場合は、1 行でスキップします。jupytext/nbformat/nbconvert が不足している場合は、add-python-package を挙げて 1 行でスキップします。ターンを失敗させず、pixi add も実行しないでください。
次に、policy.site が true で export-ml-site がインストール済みの場合は、永続化するファイルをディスクに書き込んだ後、python -m skore_skills site build --if-stale を実行します。それ以外の場合は、1 行でスキップします。site build が mkdocs-material is required でエラーになった場合は、mkdocs-material(agent)のために add-python-package を読み込み、もう一度ビルドします。pixi add/uv add は実行しないでください。そのスキルが見つからない場合、または再試行しても失敗する場合は、エラーを 1 行で記載します。ビルドエラーを記載し、データ分析のターン自体は失敗させないでください。ビルドが実行された場合は、ウェブサイトが更新されたことを伝え、report.html(ブラウザーで開く)を案内します。Markdown ファイルや html/data_analysis.html は挙げないでください。
python -m skore_skills git end-turn --stage data_analysis を実行します。JSON の action が invoke の場合、status.skills.persist-ml-git が true の場合に限り persist-ml-git を読み込んで停止します。このスキルは triage に戻ります。persist が見つからない場合は、保留中の staged パスを挙げて停止します。それ以外の場合は、status.skills.triage-ml-task が true の場合に限り triage-ml-task を読み込みます。それ以外は停止します。git commit は実行しないでください。