模型是一个带约定的对象
scikit-learn 中的一切都是估计器,而且每个估计器都遵循同一个约定。你用设置(称为超参数,例如惩罚的强度)创建它,调用 fit(X,y) 让它从数据中学习。它学到的东西保存在名字以下划线结尾的属性里,比如均值或系数。然后使用它:预处理器提供 transform(X),模型提供 predict(X)。fit_transform 就是先 fit 再 transform。表 X 每行是一个样本、每列是一个特征,y 是目标。由于约定处处相同,你可以换一个模型而保持其余代码不变。
z=σ^x−μ^,y^=a^+b^x(1) 黄金法则是:fit 只能看到训练数据。预处理器学到的 μ^、σ^ 等数,之后原样通过 transform 用到验证和测试数据上。如果缩放器在所有日子上拟合,测试日就参与塑造了缩放,这是对未来的悄悄泄漏。random_state 这类设置让运行可复现,clone 会构造一个尚未拟合的新副本,交叉验证在每一折上做的就是这件事。在本技能的市场数据实验中,行是“股票-月份”,列是动量、波动率等特征。
两个手算的小拟合在训练值
2,4,6,8 上拟合标准缩放器,它学到均值
5 和标准差
5=2.236。新值
7 变成
(7−5)/2.236=0.894。再在
(x,y)=(1,2),(2,4),(3,7) 上拟合线性回归,它学到斜率
2.5 和截距
−0.667,所以对
x=4 的预测是
−0.667+2.5×4=9.333。
- 设置进去,学到的数出来:超参数放进构造函数,学到的数以下划线结尾。
- 只在训练集上 fit:transform 和 predict 把学到的数用于任何数据。
- 处处相同的约定:换一个模型,其余代码保持不变。
实验:评分内容
- 缩放器学到的:均值10 分
- 缩放器学到的:离散程度10 分
- 转换一个测试值10 分
- 回归学到的:斜率15 分
- 一次预测10 分
- 哪些属性是学出来的10 分
- 安全的工作流10 分
- 配对术语10 分
- 为什么只在训练数据上拟合缩放器15 分