1 · 这份数据能直接用吗?¶
本批保留 Home Credit 两张 application 表的全部 356,255 条记录。TARGET 来自原比赛训练表,比赛测试表的 48,744 条记录保持 null。APPLY_DATE 是按 ID 稳定散列生成的演示日期。0train 用于拟合和 PSI 基准,1val 用于验证或筛选,2test 与 3oot 用于固定结果的独立复核,4_oot_undue 仅表示比赛未公开标签。日期、元数据和角色映射见输入方案与分区说明。
本批实际结果¶
| 分区 | 全部人数 | 已观测 | 坏率 |
|---|---|---|---|
| 0train | 215374 | 215374 | 8.1091% |
| 1val | 30720 | 30720 | 8.2975% |
| 2test | 30657 | 30657 | 7.6035% |
| 3oot | 30760 | 30760 | 8.0624% |
| 4_oot_undue | 48744 | 0 | — |
画像覆盖完整候选字段。先从缺失与外部分覆盖率定位需要解释的字段,再比较五分区的分布。 DAYS_EMPLOYED 的异常占位值只按该字段的实际规则登记,原值保留,不把它套到其他字段。 July 的差异同时包含原比赛 train/test 来源差异,不能仅凭模拟日期称为生产漂移。 PSI 使用 0train 为参考,缺失与特殊值是否纳入由实际参数记录。
从报告查看真实表与图,按实际分母判断。完整可运行代码使用共享准备入口,复用同一宽表与固定参考样本。
def _profile(inputs: HomeCreditInputs, output: Path) -> None:
"""全部候选字段画像,全部五组进入质量与 Train 参考 PSI。"""
report = profile_stats(
inputs.df, features=inputs.fcols, metrics=["missing", "zeros", "mean", "psi"],
benchmark_df=inputs.benchmark_df, group_col="dataset_flag",
categorical_features=[name for name in inputs.fcols if inputs.df.schema[name] == pl.String],
feature_metadata=inputs.feature_metadata, business_context=inputs.business_context,
)
_export(report, output, "profile")
queries = [
_query(report, "overview", "真实外部来源分覆盖率及字段单位", features=list(DIRECTIONS), limit=3),
_query(report, "dq.missing", "五分区外部来源分缺失率", features=list(DIRECTIONS), limit=3),
_query(report, "overview", "收入与原始就业天数的质量", features=["AMT_INCOME_TOTAL", "DAYS_EMPLOYED"], limit=3),
]
_case(output, 1, report, "全量数据与无标签组有哪些质量差异?", queries, {
"input_row_count": inputs.df.height, "candidate_features": inputs.fcols,
"analyzed_features": inputs.fcols, "labels_by_split": inputs.summary["partition_stats"],
"special_values": inputs.summary.get("special_values", {}),
"reference_row_count": inputs.benchmark_df.height,
"feature_example": report.describe()["feature_metadata"]["EXT_SOURCE_2"],
}, "July 是原始比赛测试来源;模拟日期的差异不能解释成真实时间漂移。")
新进程按目录读取已保存统计;实际有限 JSON 中的引用可重放。
from mars.reporting import load_report
report = load_report("profile.marsreport")
print(report.describe())
page = report.query_page("overview", features="EXT_SOURCE_1", limit=3)
print(page["reference"], page["data"])
实际查询结果与分页引用
{
"case": 1,
"report_id": "5d00f397-1768-44b0-9306-cd2531e7e9a6",
"consumer": "deterministic public API queries; no LLM",
"question": "全量数据与无标签组有哪些质量差异?",
"query": {
"question": "真实外部来源分覆盖率及字段单位",
"reference": {
"report_id": "5d00f397-1768-44b0-9306-cd2531e7e9a6",
"table": "overview",
"query": {
"offset": 0,
"limit": 3,
"features": [
"EXT_SOURCE_2",
"EXT_SOURCE_3"
]
}
},
"total_rows": 2,
"returned_rows": 2,
"omitted_rows": 0,
"next_offset": null,
"rows": [
{
"feature": "EXT_SOURCE_2",
"display_name": "外部来源分 2",
"dtype": "Float64",
"data_source": "Home Credit 2018 application_{train|test}.csv",
"missing_rate": 0.0018750614026469803,
"zeros_rate": 0.0,
"mean": 0.5148899751498333
},
{
"feature": "EXT_SOURCE_3",
"display_name": "外部来源分 3",
"dtype": "Float64",
"data_source": "Home Credit 2018 application_{train|test}.csv",
"missing_rate": 0.19545830935706165,
"zeros_rate": 0.0,
"mean": 0.5093502021860119
}
]
},
"unavailable": "July 是原始比赛测试来源;模拟日期的差异不能解释成真实时间漂移。"
}
运行与下载¶
python docs/snippets/task_cases.py --case 1 --data-dir examples/home-credit-2018/data/raw_data --output-dir output/task-cases
首次生成全部关联证据用 --case all。文件缺失会明确失败,正式入口不回退合成数据。 数据下载与输入准备 · 完整共享源码 · 共享包 · 来源和哈希 · 案例索引