-
Notifications
You must be signed in to change notification settings - Fork 108
Expand file tree
/
Copy pathquiz.json
More file actions
67 lines (67 loc) · 3.23 KB
/
Copy pathquiz.json
File metadata and controls
67 lines (67 loc) · 3.23 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
[
{
"id": "pipeline-pre-1",
"stage": "pre",
"question": "在 ML 流水线的语境中,数据泄漏是什么?",
"options": [
"在预处理过程中数据被意外删除",
"来自测试集或未来数据的信息污染了训练过程",
"模型处理数据太慢",
"在编码过程中特征被丢弃"
],
"correct": 1,
"explanation": "当在预测时本不可得的信息被用于训练时,就发生了数据泄漏。例如:在包含测试数据的整个数据集上计算缩放器的均值/标准差。"
},
{
"id": "pipeline-pre-2",
"stage": "pre",
"question": "为什么在划分训练集/测试集之前就在整个数据集上拟合缩放器会被视为泄漏?",
"options": [
"缩放改变了数据分布",
"缩放器的统计量(均值、标准差)包含了测试数据,因此模型在训练时间接看到了测试信息",
"缩放只应在测试集上进行",
"在大数据集上拟合缩放器耗时太长"
],
"correct": 1,
"explanation": "当缩放器在所有数据上拟合时,它的均值和标准差就编码了测试样本的信息。随后训练特征会用测试统计量做平移,从而把未来信息泄漏进训练。"
},
{
"id": "pipeline-post-1",
"stage": "post",
"question": "在 sklearn 中,对流水线步骤调用 fit_transform 和 transform 有什么区别?",
"options": [
"它们完全相同——都既拟合又变换",
"fit_transform 从数据中学习参数并应用变换;transform 只应用先前学到的参数",
"transform 用于训练数据;fit_transform 用于测试数据",
"fit_transform 更慢但更准确"
],
"correct": 1,
"explanation": "fit_transform 从数据中计算统计量(例如均值、标准差)并对其变换。transform 只应用已经学到的统计量而不重新计算。在测试数据上,你必须使用 transform 以避免泄漏。"
},
{
"id": "pipeline-post-2",
"stage": "post",
"question": "为什么对真实世界的数据集需要 ColumnTransformer?",
"options": [
"它使流水线在多个 CPU 上并行运行",
"它在同一条流水线内对数值列和类别列应用不同的预处理步骤",
"它自动移除含缺失值的列",
"它把所有列转换为相同的数据类型"
],
"correct": 1,
"explanation": "真实数据集包含混合类型。数值列需要缩放,类别列需要编码。ColumnTransformer 在单条流水线内把每个列子集路由到合适的变换器。"
},
{
"id": "pipeline-post-3",
"stage": "post",
"question": "一个生产模型收到了它在训练时从未见过的类别值('new_category')。流水线应该如何处理?",
"options": [
"完全忽略该行,不返回任何预测",
"从头重新训练整个模型",
"优雅地处理未知类别,例如使用一个 'unknown' 分桶,或在目标编码中使用全局均值",
"把未知类别转换为数字零"
],
"correct": 2,
"explanation": "健壮的流水线会预料到生产环境中出现未见过的类别。解决方案包括为独热编码设置一个 'unknown' 兜底,或在目标编码中默认使用全局均值。"
}
]