저는 H2O가 Python에서 처음입니다. H2O 웹 사이트의 예제 코드에 따라 앙상블 모델을 사용하여 데이터를 모델링하려고합니다. (http://docs.h2o.ai/h2o/latest-stable/h2o-docs/data-science/stacked-ensembles.html)fold_column 인수가있는 H2O의 앙상블 모델
기본 모델로 GBM과 RF를 적용했습니다. 그리고 스태킹을 사용하여 앙상블 모델로 병합하려고했습니다. 또한, 훈련 데이터에 'fold'라는 이름의 열을 추가로 만들었습니다. fold_column = "fold"
10 배의 CV를 적용했는데 cv1에서 결과를 얻었습니다. 그러나 모든 예측은 다른 9 개의 CVS에서 나오며 비어 있습니다. 내가 여기서 무엇을 놓치고 있니? 여기
내 샘플 데이터입니다 :코드 :
import h2o
from h2o.estimators.random_forest import H2ORandomForestEstimator
from h2o.estimators.gbm import H2OGradientBoostingEstimator
from h2o.estimators.stackedensemble import H2OStackedEnsembleEstimator
from h2o.grid.grid_search import H2OGridSearch
from __future__ import print_function
h2o.init(port=23, nthreads=6)
train = h2o.H2OFrame(ens_df)
test = h2o.H2OFrame(test_ens_eq)
x = train.drop(['Date','EQUITY','fold'],axis=1).columns
y = 'EQUITY'
cat_cols = ['A','B','C','D']
train[cat_cols] = train[cat_cols].asfactor()
test[cat_cols] = test[cat_cols].asfactor()
my_gbm = H2OGradientBoostingEstimator(distribution="gaussian",
ntrees=10,
max_depth=3,
min_rows=2,
learn_rate=0.2,
keep_cross_validation_predictions=True,
seed=1)
my_gbm.train(x=x, y=y, training_frame=train, fold_column = "fold")
가 그럼 난
my_gbm.cross_validation_predi와 이력서 결과를 확인 ctions() :
# Train a stacked ensemble using the GBM and GLM above ensemble = H2OStackedEnsembleEstimator(model_id="mlee_ensemble", base_models=[my_gbm, my_rf]) ensemble.train(x=x, y=y, training_frame=train) # Eval ensemble performance on the test data perf_stack_test = ensemble.model_performance(test) pred = ensemble.predict(test) pred /mgmt/data/conda/envs/python3.6_4.4/lib/python3.6/site-packages/h2o/job.py:69: UserWarning: Test/Validation dataset is missing column 'fold': substituting in a column of NaN warnings.warn(w)
내가 fold_column에 대해 뭔가를 놓치고 있습니까 : 나는 테스트 세트에서 앙상블을하려고 할 때
플러스 나는 아래의 경고가 얻을?
공개적으로 사용 가능한 데이터 세트를 사용하도록 예제를 수정할 수 있습니까? https://stackoverflow.com/help/mcve 또한 CV 프리젠 테이션을 확인하는 방법을 보여주십시오. 여기에서하는 일을 보여주는 코드는 없습니다. –
@ErinLeDell CV pred와 관련된 행을 넣습니다. 또한 샘플 데이터 세트를 만드는 동안 작은 질문이 하나 있습니다. 샘플 코드에서 fold_column에 임의의 숫자를 할당하는'cars.kfold_column (n_folds = 5, seed = 1234) '를 사용하는 것으로 나타났습니다. 난수를 할당하는 대신 fold_column에 데이터 (목록 등)를 사용하고 싶습니다. 예를 들어. 나는 train [ 'fold']. kfold_column()'을 시도했지만 여전히 난수를 할당한다. kfold_column에 데이터를 어떻게 추가 할 수 있습니까?아니면'kfold_column'을 사용하지 않고도 훈련 세트에 'fold'열만 있으면됩니다. –