Skip to main content
Glama

Disco

表形式データから、統計的に検証された新しいパターンを発見する — 相関分析やLLMでは見逃してしまう、特徴量の相互作用、サブグループの影響、条件付き関係を見つけ出します。

PyPI License: MIT

Leap Laboratories製。


実際に何ができるのか

ほとんどのデータ分析は「問い」から始まりますが、Discoは「データ」から始まります。

バイアスや前提条件なしに、ターゲット列を大きく変化させる特徴量条件の組み合わせを見つけ出します。例えば、「HDLが低く、かつCRPが高い45〜65歳の患者は、再入院率が3倍になる」といった内容を、事前にその相互作用を仮説立てすることなく発見します。

各パターンは以下の通りです:

  • ホールドアウトセットで検証済み — 汎化の可能性を高めます

  • FDR補正済み — 多重比較を調整したp値が含まれます

  • 学術文献と照合済み — 発見した内容を理解し、それが新規のものかどうかを特定するのに役立ちます

出力は、条件、効果量、p値、引用文献、および発見されたすべてのパターンの新規性分類で構成されています。

次のような場合に使用してください: 「Xに関して最も重要な変数は何か」「見逃しているパターンはないか」「このデータでどこから手をつければよいかわからない」「AとBがCにどのように影響するかを理解したい」

次のような用途には向きません: 要約統計量、可視化、フィルタリング、SQLクエリ(これらにはpandasを使用してください)


Related MCP server: Data Analysis MCP Server

クイックスタート

pip install discovery-engine-api

APIキーを取得する:

# Step 1: request verification code (no password, no card)
curl -X POST https://disco.leap-labs.com/api/signup \
  -H "Content-Type: application/json" \
  -d '{"email": "you@example.com"}'

# Step 2: submit code from email → get key
curl -X POST https://disco.leap-labs.com/api/signup/verify \
  -H "Content-Type: application/json" \
  -d '{"email": "you@example.com", "code": "123456"}'
# → {"key": "disco_...", "credits": 10, "tier": "free_tier"}

または、disco.leap-labs.com/developersでキーを作成してください。

最初の分析を実行する:

from discovery import Engine

engine = Engine(api_key="disco_...")
result = await engine.discover(
    file="data.csv",
    target_column="outcome",
)

for pattern in result.patterns:
    if pattern.p_value < 0.05 and pattern.novelty_type == "novel":
        print(f"{pattern.description} (p={pattern.p_value:.4f})")

print(f"Explore: {result.report_url}")

実行には数分かかります。discover()は自動的にポーリングを行い、進捗状況(キューの位置、推定待ち時間、現在のパイプラインステップ、ETA)をログに記録します。バックグラウンド実行については、非同期実行を参照してください。

Python SDKリファレンス(完全版) · サンプルノートブック


得られる結果

result.patterns内の各Patternは、以下のようになります(作物収量データセットからの実際の出力):

Pattern(
    description="When humidity is between 72–89% AND wind speed is below 12 km/h, "
                "crop yield increases by 34% above the dataset average",
    conditions=[
        {"type": "continuous", "feature": "humidity_pct",
         "min_value": 72.0, "max_value": 89.0},
        {"type": "continuous", "feature": "wind_speed_kmh",
         "min_value": 0.0, "max_value": 12.0},
    ],
    p_value=0.003,              # FDR-corrected
    novelty_type="novel",
    novelty_explanation="Published studies examine humidity and wind speed as independent "
                        "predictors, but this interaction effect — where low wind amplifies "
                        "the benefit of high humidity within a specific range — has not been "
                        "reported in the literature.",
    citations=[
        {"title": "Effects of relative humidity on cereal crop productivity",
         "authors": ["Zhang, L.", "Wang, H."], "year": "2021",
         "journal": "Journal of Agricultural Science"},
    ],
    target_change_direction="max",
    abs_target_change=0.34,     # 34% increase
    support_count=847,          # rows matching this pattern
    support_percentage=16.9,
)

注目すべき重要な点:

  • パターンは条件の組み合わせ — 「湿度が高いほど良い」だけでなく、湿度と風速の組み合わせなど

  • 具体的な閾値 — 曖昧な相関ではなく、72〜89%といった具体的な数値

  • 新規か確認的か — すべてのパターンが分類されます。確認的なものは既知の科学を検証し、新規のものはまさにあなたが求めていた発見です

  • 引用文献 — 何が既知であるかを示し、何が真に新しい発見であるかを確認できます

  • report_url — すべてのパターンが可視化されたインタラクティブなWebレポートへのリンク

result.summaryは、LLMが生成した物語形式の概要を提供します:

result.summary.overview
# "Disco identified 14 statistically significant patterns. 5 are novel.
#  The strongest driver is a previously unreported interaction between humidity
#  and wind speed at specific thresholds."

result.summary.key_insights
# ["Humidity × low wind speed at 72–89% humidity produces a 34% yield increase — novel.",
#  "Soil nitrogen above 45 mg/kg shows diminishing returns when phosphorus is below 12 mg/kg.",
#  ...]

仕組み

Discoはデータに対するプロンプトエンジニアリングではなく、パイプラインです。以下の手順を実行します:

  1. データのサブセットで機械学習モデルをトレーニングする

  2. 解釈可能性技術を使用して、学習されたパターンを抽出する

  3. FDR補正(Benjamini-Hochberg法)を用いて、ホールドアウトデータですべてのパターンを検証する

  4. セマンティック検索を通じて、学術文献と照らし合わせて生存したパターンをチェックする

これは、pandasコードを書いたり、LLMにCSVを見るよう依頼したりしても再現できません。仮説主導型の分析では見逃してしまう構造を、仮説から始めないことで発見します。


データの準備

実行前に、無意味な結果を生む可能性のある列を除外してください。Discoは統計的に実在するパターンを見つけますが、入力にターゲットと定義上関連する列が含まれている場合、パターンはトートロジー(同語反復)になります。

除外すべきもの:

  1. 識別子 — 行ID、UUID、患者ID、サンプルコード

  2. データリーク — ターゲットの名前変更や再フォーマット(例:ターゲットがdiagnosis_codeの場合のdiagnosis_text

  3. トートロジー列 — ターゲットと同じ構成要素の代替エンコーディング。ターゲットがserious(深刻)なら、serious_outcomenot_seriousdeathはすべて同じ分類の一部です。ターゲットがprofit(利益)なら、revenue(収益)とcost(コスト)はそれを構成する要素です。ターゲットが調査指標なら、サブ項目はトートロジーです。

例を含む完全なガイダンス:SKILL.md


パラメータ

await engine.discover(
    file="data.csv",           # path, Path, or pd.DataFrame
    target_column="outcome",   # column to predict/explain
    analysis_depth=2,          # 2=default, higher=deeper analysis, lower = faster and cheaper
    visibility="public",       # "public" (always free, data and report is published) or "private" (costs credits)
    column_descriptions={      # improves pattern explanations and literature context
        "bmi": "Body mass index",
        "hdl": "HDL cholesterol in mg/dL",
    },
    excluded_columns=["id", "timestamp"],  # see "Preparing your data" above
    use_llms=False,                        # Defaults to False. If True, runs are slower and more expensive, but you get smarter pre-processing, summary page, literature context and novelty assessment. Public runs always use LLMs.
    title="My dataset",
    description="...", # improves pattern explanations and literature context
)

パブリック実行は無料ですが、結果は公開されます。プライベートデータの場合はvisibility="private"を設定してください(クレジットを消費します)。


非同期実行

実行には数分かかります。エージェントワークフローや、並行して他の作業を行うスクリプトの場合:

# Submit without waiting
run = await engine.run_async(file="data.csv", target_column="outcome", wait=False)
print(f"Submitted {run.run_id}, continuing...")

# ... do other things ...

result = await engine.wait_for_completion(run.run_id, timeout=1800)

同期スクリプトやJupyterノートブックの場合:

result = engine.run(file="data.csv", target_column="outcome", wait=True)
# or: pip install discovery-engine-api[jupyter] for notebook compatibility

MCPサーバー

DiscoはMCPサーバーとして利用可能です。ローカルインストールは不要です。

{
  "mcpServers": {
    "discovery-engine": {
      "url": "https://disco.leap-labs.com/mcp",
      "env": { "DISCOVERY_API_KEY": "disco_..." }
    }
  }
}

ツール:discovery_list_plans, discovery_estimate, discovery_upload, discovery_analyze, discovery_status, discovery_get_results, discovery_account, discovery_signup, discovery_signup_verify, discovery_login, discovery_login_verify, discovery_add_payment_method, discovery_subscribe, discovery_purchase_credits

エージェントスキルファイル(完全版)


料金

費用

パブリック実行

無料 — 結果とデータは公開されます

プライベート実行

ファイルサイズと構成によりクレジットが異なります — engine.estimate()を使用してください

無料枠

月10クレジット、カード不要

リサーチャー

月額$49 — 50クレジット

チーム

月額$199 — 200クレジット

クレジット

1クレジットあたり$0.10

実行前に見積もりを行う:

estimate = await engine.estimate(file_size_mb=10.5, num_columns=25, analysis_depth=2, visibility="private")
# estimate["cost"]["credits"] → 55
# estimate["account"]["sufficient"] → True/False

アカウント管理は完全にプログラム可能です。SDKまたはREST APIを使用して、支払い方法の追加、プランの購読、クレジットの購入が可能です。Python SDKリファレンスまたはSKILL.mdを参照してください。


期待されるデータ形式

Discoはフラットなテーブルを期待します(列は特徴量、行はサンプル)。

| patient_id | age | bmi  | smoker | outcome |
|------------|-----|------|--------|---------|
| 001        | 52  | 28.3 | yes    | 1       |
| 002        | 34  | 22.1 | no     | 0       |
| ...        | ... | ...  | ...    | ...     |
  • 1観測につき1行 — 患者、サンプル、トランザクション、測定値など

  • 1特徴量につき1列 — 数値、カテゴリ、日時、フリーテキストのいずれも可

  • 1ターゲット列 — 理解したい結果。少なくとも2つの異なる値が必要です

  • 欠損値はOK — Discoが自動的に処理します。事前に行を削除したり補完したりしないでください

  • ピボット不要 — データがすでにフラットなテーブルであれば、そのまま使用できます

サポートされている形式: CSV、TSV、Excel (.xlsx)、JSON、Parquet、ARFF、Feather。最大5GB。

サポートされていないもの: 画像、生のテキストドキュメント、ネストされた/階層的なJSON、マルチシートのExcel(最初のシートを使用するか、CSVにエクスポートしてください)


他のツールとの比較

目的

ツール

要約統計量、データ品質

ydata-profiling, sweetviz

予測モデル

AutoML (auto-sklearn, TPOT, H2O)

クイックな相関分析

pandas, seaborn

データに関する特定の質問への回答

ChatGPT, Claude

探すべきものすらわからないものを発見する

Disco

DiscoはEDAやAutoMLの代替ではありません。それらのツールが見逃すパターンを発見します。私たちは18種類のデータ分析ツールをテストし、既知の正解パターンを持つデータセットで検証しました。ほとんどのツールは誤った結果を自信満々に報告しましたが、すべてのパターンを発見できたのはDiscoだけでした。


リンク


Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/leap-laboratories/discovery-engine'

If you have feedback or need assistance with the MCP directory API, please join our Discord server