Machine learning h2o流量UI:建立模型,但没有ROC曲线或多类AUC?

Machine learning h2o流量UI:建立模型,但没有ROC曲线或多类AUC?,machine-learning,enums,random-forest,h2o,roc,Machine Learning,Enums,Random Forest,H2o,Roc,提及 我能够按照这个例子绘制ROC和AUC曲线,但当我对我的数据做同样的事情时,我有“得分历史-偏差”而不是“得分历史-对数损失”,并且我的“ROC曲线-训练指标”没有出现 我的数据集有2个类,0,1,而不是示例中的是和否。什么决定ROC曲线是否可移植 更新了2019年7月10日Mauriver的回复: 我有“转换为枚举”作为我的响应“标签”,并将分布更改为“伯努利”,但我仍然无法绘制ROC。 更新:适用于与我有相同遭遇的未来用户。似乎h2o无法使用类为“0”和“1”的响应,即使您转换为枚举。

提及

我能够按照这个例子绘制ROC和AUC曲线,但当我对我的数据做同样的事情时,我有“得分历史-偏差”而不是“得分历史-对数损失”,并且我的“ROC曲线-训练指标”没有出现

我的数据集有2个类,0,1,而不是示例中的是和否。什么决定ROC曲线是否可移植

更新了2019年7月10日Mauriver的回复: 我有“转换为枚举”作为我的响应“标签”,并将分布更改为“伯努利”,但我仍然无法绘制ROC。

更新:适用于与我有相同遭遇的未来用户。似乎h2o无法使用类为“0”和“1”的响应,即使您转换为枚举。我的问题通过将0和1重新标记为“正常”和“恶意”得到解决,ROC曲线将被绘制

我的数据集有2个类,0,1,而不是示例中的是和否

将要发生的是,H2O已经确定这是一个数字列,而不是一个分类(aka factor)列。修复方法就是在该列上使用
as.factor()
。在导入数据之后,但在使用数据构建模型之前,请执行此操作

然后,它将知道如何构建一个分类模型,而不是一个回归模型,并且您将获得您期望看到的度量

下面是一个示例:(或在H2O文档中搜索as.factor,您将在其中找到更多加载)


在Flow中,首先上载文件,然后单击parse files,它将显示列的列表。分类/因子列在那里被称为“Enum”(是的,这令人困惑)。您的列可能显示为数字,因此转到下拉框并将其更改为enum。然后开始解析。然后,在此之后,构建您的模型。

您必须将响应列的类型更改为“enum”

或者将模型参数设置中的分布更改为“伯努利”(二项分类)

在图像中,您共享“Enum(3)”,因此结果是多项式分类而不是二项式分类。所以你应该看到混淆矩阵,而不是ROC曲线。ROC曲线只能显示为2级分类(更多关于ROC的信息,请参见此处)

您应该看到这样的情况(如果将分布设置为“多项式”):


您好,我可以知道如何在h2o Flow UI中设置为factor吗?下面的示例中,factor类型为enum,因此我在分析Flow中的数据时将响应设置为enum,但仍然没有绘制ROC曲线。我已在命令行中将响应列手动设置为factor,在local中写回csv,然后再次按照示例进行操作,我仍然无法得到h2o来绘制ROC曲线。请提供帮助。@775签入流以查看实际导入的数据类型。这就是Python代码?应该是
df['target\u cured'].asfactor()
请参见Hi Darren,我发现了错误。我试图将我的
df['target\u cured']
转换为一个类别,然后再转换为一个框架。需要强制转换到H2OFrame,
hf=h2o.H2OFrame(df)
然后运行
hf['target\u cured']=hf['target\u cured']]。asfactor()
我刚刚看到了您的更新。只要转换数据,H2O就可以使用响应代码“0”和“1”。问题是您有
ENUM(3)
而没有
ENUM(2)
。换句话说,您的数据中还有其他一些价值。它可能是一个“2”,但更可能是一个空间或其他东西。可能只有一排。请清除数据,然后重试。在电子表格中按该列排序应该很容易找到。