如何避免具有培训数据没有的分类值的测试数据



在我的spark研究中,我经常遇到应用程序崩溃,并带有一些跟踪" can not find key xxx"。在遇到碰撞跟踪中未清晰的消息后,我发现这是因为测试数据具有一定的价值,而培训数据没有。
例如:
有一个分类功能包含4个唯一值(1,2,3,4)。在split之后,数据集用于训练/测试数据集,培训数据仅具有此功能的(1,2,3(,并且测试数据集具有(...,4(。训练模型后,使用测试数据集评估模型时,应用程序将崩溃。

当数据预处理或有办法避免这种情况时,是否有任何最佳做法?


更新更多详细信息:

  1. 我正在训练具有几个分类特征和数值特征的决策树。

  2. 培训/测试数据集为70/30,然后评估失败了:"由:java.util.nosuchelementException引起:找不到键:5.0"

  3. 然后我将培训/测试更改为100/30,错误消失了。

所以我认为问题来自培训数据中缺少的分类价值,我需要一种避免这种情况的方法。

使用分层采样

您将数据集由标签拆分,然后在每个标签中进行采样。

然后,您之后再次加入并洗牌所有标签。

您可以尝试对分类属性进行相同的尝试。但是,当然,您最终可能会观察到您从未见过的独特价值。良好的实现不应崩溃!

相关内容

最新更新