【发布时间】:2018-03-14 07:53:59
【问题描述】:
我在为 H2ORandomForestEstimator 实现简单平衡时遇到问题,我正在尝试重现 Darren Cook 用 R 编写的书中的一个简单示例('Practical Machine Learning with H2O - 第 107 页)。
在处理 Iris 数据集时,首先我人为地不平衡目标变量,切掉了保留前 120 行的大部分Virginica。
然后我构建了 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)
这是我的输出:
这是我的预期输出。
我明显错过了什么?提前致谢。
【问题讨论】:
标签: python machine-learning h2o