【发布时间】:2020-10-16 08:32:57
【问题描述】:
当我学习 kaggle 微课程(机器学习)时,我学会了如何找到最佳叶子大小(通过找到最小 MAE)。但是,当我将最佳叶子尺寸放入最终模型时,我得到了不同的 MAE 值。例如,
def get_mae(max_leaf_nodes, train_X, val_X, train_y, val_y):
model = DecisionTreeRegressor(max_leaf_nodes = max_leaf_nodes, random_state = 0)
model.fit(train_X, train_y)
preds_val = model.predict(val_X)
mae = mean_absolute_error(preds_val, val_y)
return mae
candidates_leaf_nodes = list(range(5, 500))
scores = {leaf_size: get_mae(leaf_size, train_X, val_X, train_y, val_y) for leaf_size in candidates_leaf_nodes}
best_leaf_size = min(scores, key = scores.get)
best_model = DecisionTreeRegressor(max_leaf_nodes = best_leaf_size, random_state = 0)
best_model.fit(X,y)
best_preds = best_model.predict(val_X)
best_mae = mean_absolute_error(best_preds, val_y)
print("best_leaf_size: {:,.0f}".format(best_leaf_size))
print("Validation MAE for best value of best_leaf_size: {:,.0f}".format(get_mae(best_leaf_size, train_X, val_X, train_y, val_y)))
print("Validation MAE for best value of best_leaf_size: {:,.0f}".format(best_mae))
结果显示
best_leaf_size:71
best_leaf_size 最佳值的验证 MAE:26,704
best_leaf_size 最佳值的验证 MAE:18,616
当我使用 .fit(train_X, train_y) 和 当我使用 .fit(X, y) 时,我得到了 18,616 个 MAE。
所以,我想知道为什么我得到两个不同的值,这意味着 .fit(train_X, train_y) 和 .fit(X, y) 之间有什么区别。
谢谢。
【问题讨论】:
标签: python machine-learning decision-tree