我是这个领域的新手,并试图阅读一些代码来完成我的作业 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_train
和pred_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
答案 0 :(得分:0)
在机器学习中,常见的问题是过度拟合。如果使用与训练相同的集合检查分类质量,则算法倾向于训练该特定集合。他们学习仅针对该集合的特征。通常的做法是将数据划分为用于训练的集合,以及用于检查分类是否正确的集合。
代码的BLEND
部分使用两种不同的机器学习算法,然后通过取平均值来混合它们的结果。这样作者试图尽量减少回归误差,希望不同的算法会产生不同的错误。