如何获取H2O AutoML非最优模型详情?类别不平衡指标选型
我来帮你搞定这两个问题哈——一个是类别不平衡场景下该用啥评估指标,另一个是怎么拿到AutoML生成的所有模型的详细信息:
一、针对类别不平衡三分类任务的合适评估指标
因为你的数据集存在类别不平衡(某类样本极少),mean_per_class_error确实不能很好反映模型的真实性能,推荐用这些更合适的指标:
- 混淆矩阵与衍生指标:重点关注少数类的精确率(Precision)、召回率(Recall)和F1分数。你可以通过
model.confusion_matrix()获取混淆矩阵,也可以直接调用model.model_performance().precision()、model.model_performance().recall()、model.model_performance().f1()来单独提取每个类别的这些指标。 - 加权F1分数:给样本量少的类别赋予更高权重,能更公平地衡量模型整体表现。H2O的模型性能报告里直接支持
weighted_f1指标,你可以从model.model_performance()的输出里找到它。 - AUC-PR(精确率-召回率曲线下面积):相比AUC-ROC,PR曲线更适合不平衡数据集,它聚焦于模型对少数类的识别能力,用
model.model_performance().aucpr()就能获取这个值。 - 对数损失(Log Loss):这个指标能反映模型分类概率的校准程度,不管类别是否平衡都适用,调用
model.model_performance().logloss()即可得到。
二、获取H2O AutoML非最优模型的详细信息
AutoML运行完成后会生成一个AutoML对象(假设你把它存在变量aml里),通过以下步骤就能拿到所有模型的细节:
- 查看完整模型排行榜:用
aml.leaderboard可以看到你贴出的所有模型ID和对应的初步指标,这是获取所有模型ID的入口。 - 单独获取某个模型对象:比如你想查看那个XRT模型的细节,直接用对应的model_id调用
h2o.get_model()就行:model = h2o.get_model("XRT_0_AutoML_20180420_174925") - 查看模型的详细信息:拿到模型对象后,这些方法能帮你挖掘细节:
model.summary():输出模型的整体概览,包括训练参数、特征重要性等核心信息;model.model_performance():生成该模型在训练/验证集上的完整性能报告,包含所有支持的评估指标;model.varimp_plot():如果是树模型(比如DRF、XRT),可以画出特征重要性可视化图;model.predict(test_data):用该模型对测试集做预测,验证其在 unseen 数据上的实际表现。
- 批量处理所有模型:如果想遍历所有模型,可以循环读取排行榜里的model_id:
for model_id in aml.leaderboard['model_id'].as_data_frame()['model_id']: current_model = h2o.get_model(model_id) # 这里可以添加你的操作,比如保存模型、提取特定指标等
内容的提问来源于stack exchange,提问作者slowD
相关产品推荐
相关产品推荐

