【问题标题】:How to get the data on the GBM model with H2o library如何使用 H2o 库获取 GBM 模型的数据
【发布时间】:2021-02-18 00:40:01
【问题描述】:

我正在使用 GBM 模型,我想与其他机器学习方法进行比较。我跑了5折。据我所知,他们会将数据分成 5 份,并选择其中一份进行测试,另一份进行训练。如何从 H2o lib 的 gbm 中获取 5 折数据?

我用 Python 语言运行它。

folds = 5
cars_gbm = H2OGradientBoostingEstimator(nfolds = folds, seed = 1234)

【问题讨论】:

    标签: python h2o gbm


    【解决方案1】:

    有两种方法:

    1. 您可以手动创建和指定折叠。
    2. 您可以要求 H2O 保存折叠索引(对于每一行,它属于哪个折叠 ID?)并通过设置 keep_cross_validation_fold_assignment=True 将它们作为单列数据返回。

    以下是一些代码示例:

    import h2o
    from h2o.estimators import *
    
    h2o.init()
    
    # Import cars dataset
    cars = h2o.import_file("https://s3.amazonaws.com/h2o-public-test-data/smalldata/junit/cars_20mpg.csv")
    cars["economy_20mpg"] = cars["economy_20mpg"].asfactor()
    x = ["displacement","power","weight","acceleration","year"]
    y = "economy_20mpg"
    nfolds = 5
    

    第一种方式:

    # Create a k-fold column and append to the cars dataset
    # Or you can use an existing fold id column
    cars["fold_id"] = cars.kfold_column(n_folds=nfolds, seed=1)
    
    # Train a GBM
    cars_gbm = H2OGradientBoostingEstimator(seed=1, fold_column = "fold_id",
                  keep_cross_validation_fold_assignment=True)
    cars_gbm.train(x=x, y=y, training_frame=cars)
    
    # View the fold ids (identical to cars["fold_id"])
    print(cars_gbm.cross_validation_fold_assignment())
    

    第二种方式:

    # Train a GBM & save fold IDs
    cars_gbm = H2OGradientBoostingEstimator(seed=1, nfolds=nfolds,
                  keep_cross_validation_fold_assignment=True)
    cars_gbm.train(x=x, y=y, training_frame=cars)
    
    # View the fold ids
    print(cars_gbm.cross_validation_fold_assignment())
    

    【讨论】:

    • 得到cross_validation_fold_assignment()后,你知道如何将它用于另一个模型吗?例如,我将使用 gbm 重新运行(更改参数,例如树数、topping_round 等)。谢谢,
    猜你喜欢
    • 2018-03-07
    • 2021-05-26
    • 2018-01-21
    • 2020-03-18
    • 2021-02-23
    • 1970-01-01
    • 1970-01-01
    • 2017-10-20
    • 2017-06-14
    相关资源
    最近更新 更多