起初,我认为model_performance(train=True)
给出了根据我们训练模型所用的相同数据进行预测的性能结果。但这不是事实,因为数字必须与model.model_performance(test_data=train)
相同,但事实并非如此。
考虑以下玩具示例:
# Make a dataframe
df = h2o.H2OFrame({'a':list(range(100)), 'b':list(range(100, 0, -1)), 'c':list(range(0, 200, 2))})
# Split the data
train, val, test = df.split_frame([.6, .2], seed=0)
# Build a model
from h2o.estimators.random_forest import H2ORandomForestEstimator
model = H2ORandomForestEstimator(seed=0)
# Train the model
model.train(x=train.names[:-1], y=train.names[-1], training_frame=train, validation_frame=val)
# Get performance results
print(model.model_performance(train=True)['mae']
, model.model_performance(valid=True)['mae']
, model.model_performance(test_data=test)['mae']
)
# 1.3816 1.1968 1.4722
将结果与
进行比较print(model.model_performance(test_data=train)['mae']
, model.model_performance(test_data=val)['mae']
, model.model_performance(test_data=test)['mae']
)
# 0.5548 1.1968 1.4722
请注意,model_performance(train=True)
和model_performance(test_data=train)
的结果是不同的,但是model_performance(valid=True)
和model_performance(test_data=val)
的结果是相同的。
所以我想知道model_performance(train=True)
和model.model_performance(test_data=train)
是否应该相同(并且H2O代码中的计算有误),还是model_performance(train=True)
的目的是其他原因
在docs中说
培训:布尔值,可选
报告模型的训练指标。
有效:布尔值,可选
报告模型的验证指标。
但是鉴于上述事实,这还不是很清楚。
答案 0 :(得分:2)
train=True
显示了训练结束时模型的性能,这意味着它返回训练期间构造的训练指标,而test_data = train
将train
数据发送到模型以进行预测和检查根据该预测对性能进行建模。