数据模式发现引擎

一款通过机器学习自动发现表格数据中统计显著性模式(特征交互、子群效应和条件关系)的分析工具,适用于探索性数据分析和未知规律挖掘。

  • by leap-laboratories
  • Python
  • 本地部署
  • 7 星标
  • 更新于
在 GitHub 查看 leap-laboratories/discovery-engine-mcp

使用说明

迪斯科

在表格数据中找到新颖的、经过统计验证的模式 --特征交互、亚组效应和人类和代理错过的条件关系。

由...制作 Leap实验室.


它实际上做了什么

大多数数据分析都是从一个问题开始的。Disco从数据开始。

在没有偏见或假设的情况下,它发现了显著改变目标列的特征条件组合,比如“45-65岁低HDL患者” 和 高CRP的再入院率是3倍”——你不需要先假设这种相互作用。

每种模式都是:

  • 在搁置集上验证 --增加了泛化的机会
  • FDR已纠正 --包括p值,针对多次测试进行了调整
  • 与学术文献对照 --帮助你理解你的发现,并确定它是否新颖。

输出是结构化的:条件、效果大小、p值、引用以及每个发现的模式的新颖性分类。

在以下情况下使用它: “相对于X,哪些变量最重要”,“我们缺少哪些模式?”,“我不知道从哪里开始处理这些数据”,“需要了解A和B是如何影响C的”。

不适用于: 摘要统计、可视化、过滤、SQL查询——使用pandas


快速入门

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/开发者.

进行第一次分析:

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() 自动轮询并记录进度——队列位置、估计等待时间、当前管道步骤和预计到达时间。有关后台运行,请参见 异步运行.

→ 完整的Python SDK参考 · 笔记本示例


你得到了什么

每 Pattern 在 result.patterns 看起来像这样(作物产量数据集的实际输出):

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%,没有模糊的相关性
  • 新颖vs确证 --每种模式都被分类;验证性的验证了已知的科学,新颖的验证是你来的目的
  • 引用 --显示已知的内容,这样你就可以看到真正的新内容
  • report_url 链接到可视化所有模式的交互式网络报告

这 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_text 当目标是 diagnosis_code)
  3. 教学专栏 --与目标具有相同构造的替代编码。如果目标是 serious那么 serious_outcome, not_serious, death 都属于同一分类。如果目标是 profit那么 revenue 和 cost 如果目标是调查指标,则子项是同义反复的。

完整的指导和示例: 技能.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美元/月——500学分
团队 199美元/月——2000学分
学分 每学分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参考 或 技能.md.


预期数据格式

迪斯科期待 扁平表 --列代表特征,行代表样本。

| patient_id | age | bmi  | smoker | outcome |
|------------|-----|------|--------|---------|
| 001        | 52  | 28.3 | yes    | 1       |
| 002        | 34  | 22.1 | no     | 0       |
| ...        | ... | ...  | ...    | ...     |
  • 每次观察一行 --病人、样本、交易、测量等。
  • 每个特征一列 --数字、分类、日期时间或自由文本都可以
  • 一个目标列 --你想了解的结果。必须至少有两个不同的值。
  • 缺失值正常 --Disco会自动处理它们。不要事先掉线或妄下结论。
  • 无需旋转 --如果你的数据已经在一个平面表中,那么它就可以使用了

支持的格式: CSV、TSV、Excel(.xlsx)、JSON、拼花游戏、ARFF、羽毛游戏。最大5 GB。

不支持: 图像、原始文本文档、嵌套/分层JSON、多页Excel(使用第一页或导出为CSV)


与其他工具相比

目标 工具
汇总统计、数据质量 ydata分析、sweetviz
预测模型 AutoML(自动sklearn、TPOT、H2O)
快速相关性 大熊猫、海兔
回答一个关于数据的具体问题 ChatGPT,克劳德
找到你不知道要找的东西 迪斯科

Disco并不是EDA或AutoML的替代品——它能找到这些工具错过的模式 测试了18个数据分析工具 在具有已知地面真实模式的数据集上。大多数人自信地报告了错误的结果。迪斯科是唯一找到所有模式的。


链接