在H2O model_performance()中,“ train = True”的作用是什么?

时间:2019-07-04 20:05:21

标签: python machine-learning h2o

起初,我认为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中说

  

培训:布尔值,可选
  报告模型的训练指标。
  有效:布尔值,可选
  报告模型的验证指标。

但是鉴于上述事实,这还不是很清楚。

1 个答案:

答案 0 :(得分:2)

train=True显示了训练结束时模型的性能,这意味着它返回训练期间构造的训练指标,而test_data = traintrain数据发送到模型以进行预测和检查根据该预测对性能进行建模。