python - 在看不见的数据点上使用 category_encoders.TargetEncoder()
问题描述
通常我会以这种方式实例化一个 TargetEncoder:
encoder = TargetEncoder()
X[cat_features] = encoder.fit_transform(X[cat_features],y)
X.head()
然后我将执行我的训练测试拆分,我的所有 X 变量(X_train / X_test)都将被正确编码,我可以测试我的模型的性能,这很棒!
但是,我不明白我将如何更进一步并将其用于“看不见”的样本。假设我测试了我的模型,我认为它有效,然后有人递给我新的观察结果以进行预测。如果没有任何东西,我该怎么做?似乎所有 TargetEncoder 方法都需要一个变量。我尝试使用:
valset[cat_features] = encoder.transform(valset[cat_features])
但得到了错误:
ValueError: Must train encoder before it can be used to transform data.
我尝试在谷歌上搜索值错误,但没有弹出任何看起来有用的信息。
解决方案
不要使用普通的 Target Encoder ,而是尝试查看 NestedCVWrapper ,因为这可以帮助避免目标泄漏问题,并在训练/测试集中的分类变量分布存在显着差异时进行适当的处理。
NestedCVWrapper 在我尝试使用时会引发相同的错误,transform
但我发现该fit_transform
方法可以同时接收训练集和验证集,因此您将返回 2 个对象。如果您想查看此实现,请查看此链接:https ://contrib.scikit-learn.org/category_encoders/_modules/category_encoders/wrapper.html#NestedCVWrapper.fit_transform
推荐阅读
- jmeter - 提取响应 x-authorization-token
- c++ - 如何在 C++ 编译时创建成员变量的集合?
- python - 尝试在 Jupyter Notebook 中导入 sklearn 时出错
- blockchain - Chain Link VRF 需要很长时间才能获得随机数
- oracle - PBI - 直接查询和 Oracle 表功能
- amazon-web-services - 来自 S3 的 URL 图像不显示图像
- r - 如何以时间单位将时间序列数据绘制为箱线图?
- kibana - 如何在 Kibana、Grafana 等任何工具中为磁盘中的结构化日志文件创建仪表板
- android - 自定义布局不会改变其相对于其他元素的位置
- javascript - JavaScript 表格未显示在屏幕上