gpt4 book ai didi

machine-learning - 具有多个特征的训练模型,其值在概念上是相同的

转载 作者:行者123 更新时间:2023-11-30 09:19:32 25 4
gpt4 key购买 nike

例如,假设我正在尝试训练一个二元分类器,该分类器采用以下形式的样本输入

x = {d=(type of desk), p1=(type of pen on desk), p2=(type of *another* pen on desk)}

假设我然后在样本上训练模型:

x1 = {wood, ballpoint, gel},      y1 = {0}

x2 = {wood, ballpoint, ink-well}, y2 = {1}.

并尝试对新样本进行预测:x3 = {wood, gel, ballpoint} 。在这种情况下我希望得到的响应是 y3 = {0} ,因为从概念上讲,哪支笔被指定为 p1 或 p2 并不重要(即我不希望它重要)。

当尝试运行此模型时(在我的例子中,使用 h2o.ai 生成的模型),我收到错误,类别枚举为 p2无效(因为模型在训练期间从未在 p2 的类别中见过“ballpoint”)(在 h2o 中:hex.genmodel.easy.exception.PredictUnknownCategoricalLevelException)

我的第一个想法是为每个样本生成“钢笔”特征的排列来训练模型。有没有更好的方法来处理这种情况?具体来说,在 h2o.ai Flow UI 解决方案中,因为这是我用来构建模型的解决方案。谢谢。

最佳答案

H2O 二进制模型(在 H2O 集群中运行的模型)将自动处理看不见的分类级别,但是,当您使用纯 Java POJO 模型方法生成预测时(如您的情况),这是一个可配置选项。在 EasyPredictModelWrapper 中,默认行为是未知的分类级别抛出 PredictUnknownCategoricalLevelException,这就是您看到该错误的原因。

EasyPredictModelWrapper Javadocs中有更多关于此的信息。 。这是一个例子:

用于生成 POJO 和 MOJO 模型的简单预测 API。使用方法如下:1. 实例化 EasyPredictModelWrapper2.新建一行数据3. 调用预测方法之一

这是一个例子:

// Step 1.
modelClassName = "your_pojo_model_downloaded_from_h2o";
GenModel rawModel;
rawModel = (GenModel) Class.forName(modelClassName).newInstance();

EasyPredictModelWrapper model = new EasyPredictModelWrapper(
new EasyPredictModelWrapper.Config()
.setModel(rawModel)
.setConvertUnknownCategoricalLevelsToNa(true));

// Step 2.
RowData row = new RowData();
row.put(new String("CategoricalColumnName"), new String("LevelName"));
row.put(new String("NumericColumnName1"), new String("42.0"));
row.put(new String("NumericColumnName2"), new Double(42.0));

// Step 3.
BinomialModelPrediction p = model.predictBinomial(row);

关于machine-learning - 具有多个特征的训练模型,其值在概念上是相同的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45093030/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com