这个案例如何融合上述预测以及为什么将所有列车数据分成两部分?

时间:2016-11-21 16:43:48

标签: python pandas prediction xgboost

我是这个领域的新手,并试图阅读一些代码来完成我的作业 https://github.com/auduno/Kaggle-Acquire-Valued-Shoppers-Challenge/blob/master/generate_submission.py

在这种情况下,程序员将整个列车数据分成两部分,仅使用一部分来训练和预测另一部分。我对这个以及测试部分感到困惑。

test_data = pd.io.parsers.read_csv("./features/test/all_features.csv", sep=" ")
train_data = pd.io.parsers.read_csv("./features/train/all_features.csv", sep=" ")

split = ShuffleSplit(train_data.shape[0], n_iter = 1, test_size=0.10)
for tr, te in split:
    train1, train2 = tr, te

此外,在混合部分,我无法理解将所有预测数据放在一起的过程。 pred_trainpred_test都是预测的数据,但是他用它来再次训练?你能解释一下吗?非常感谢。

############### BLEND


dtrain2 = xgb.DMatrix( pred_train, label=train2_label.values)
dtest = xgb.DMatrix( pred_test )

print "training blend : xgb trees booster logistic regression, max depth 2"
param = {'bst:max_depth':2, 'bst:eta':0.1, 'silent':1, 'objective':'binary:logistic', 'nthread' : 8, 'eval_metric':'auc' }
num_round = 50
bst = xgb.train( param, dtrain2, num_round)

pred_label_test = bst.predict( dtest )

print "training blend : xgb linear booster logistic regression"
param = {'booster_type':1, 'bst:lambda':0, 'bst:alpha':0, 'bst:lambda_bias':0, 'silent':1, 'objective':'binary:logistic', 'nthread' : 8, 'eval_metric':'auc' }
num_round = 25
bst = xgb.train( param, dtrain2, num_round)

pred_label = bst.predict( dtest )       

mean_pred = (pred_label + pred_label_test)/2.

predictions[r] = mean_pred

1 个答案:

答案 0 :(得分:0)

在机器学习中,常见的问题是过度拟合。如果使用与训练相同的集合检查分类质量,则算法倾向于训练该特定集合。他们学习仅针对该集合的特征。通常的做法是将数据划分为用于训练的集合,以及用于检查分类是否正确的集合。

代码的BLEND部分使用两种不同的机器学习算法,然后通过取平均值来混合它们的结果。这样作者试图尽量减少回归误差,希望不同的算法会产生不同的错误。