我在为H2ORandomForestEstimator实现简单平衡时遇到问题,我试图重现Darren Cook在R上写的一本书中的一个简单示例(“使用H2O进行实用机器学习-第107页”)。
首先,在Iris数据集上进行工作,我人为地使目标变量失衡,从而切掉了大部分的弗吉尼亚州,并保持了前120行。
然后,我建立了3个模型,一个是普通模型,一个是将balance_classes设置为True的模型,最后一个是将balance_classes设置为True的模型,然后输入一个class_sampling_factors列表以过度采样弗吉尼亚州模型。列表为[1.0,1.0,2.5],是指按字母顺序排序的列。
我训练它们,然后为每个输出输出混淆矩阵以进行训练。
我期望第一个输出不平衡,而后两个输出不平衡,而我总是得到相同的结果。我检查了the documentation example in Python,但看不到任何错误(我可能也很累)。
这是我的代码:
data_unb = data[1:120,:] # messing up with target variable
train, valid = data_unb.split_frame([0.8], seed=12345)
m1 = h2o.estimators.random_forest.H2ORandomForestEstimator(seed=12345)
m2 = h2o.estimators.random_forest.H2ORandomForestEstimator(balance_classes=True, seed=12345)
m3 = h2o.estimators.random_forest.H2ORandomForestEstimator(balance_classes=True, class_sampling_factors=[1.0,1.0,2.5], seed=12345)
m1.train(x=list(range(4)),y=4,training_frame=train,validation_frame=valid,model_id='RF_defaults')
m2.train(x=list(range(4)),y=4,training_frame=train,validation_frame=valid,model_id='RF_balanced')
m3.train(x=list(range(4)),y=4,training_frame=train,validation_frame=valid,model_id='RF_class_sampling',)
m1.confusion_matrix(train)
m2.confusion_matrix(train)
m3.confusion_matrix(train)
这是我的输出:
my confusion matrices (wrong)
这是我的预期输出。
expected confusion matrices
我显然想念什么?提前致谢。
最佳答案
您什么都不会错过。 offset_column
在H2O随机森林中可用,但实际上不起作用。该错误记录在here中,并应在下一个稳定的H2O版本中修复。抱歉造成混乱!
它应适用于其余的H2O算法(XGBoost除外)。例如,如果要尝试使用GBM,您会发现它可以正常工作。
关于python - h2o python平衡类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49262383/