Python model.fit(X,y)和model.fit(train_X,train_y)之间的区别是什么

Python model.fit(X,y)和model.fit(train_X,train_y)之间的区别是什么,python,machine-learning,decision-tree,Python,Machine Learning,Decision Tree,当我学习kaggle micro课程(机器学习)时,我学会了如何找到最佳叶片大小(通过找到最小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(t

当我学习kaggle micro课程(机器学习)时,我学会了如何找到最佳叶片大小(通过找到最小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))
结果表明

最佳叶片尺寸:71

最佳叶片尺寸最佳值的验证MAE:26704

最佳叶片尺寸最佳值的验证MAE:18616

当我使用.fit(train_X,train_y)和 当我使用.fit(X,y)时,我得到了18616个MAE

所以,我想知道为什么我得到了两个不同的值,这意味着.fit(train_X,train_y)和.fit(X,y)之间的区别是什么


谢谢。

您正在使用相同的参数对模型进行拟合,但在两个不同的数据集上,一个在
train_X
上,另一个在
X
上。根据数据集的分布,你会有不同的MAE分数。

那么,你是说两个模型基本上是不同的模型?一个基于X的数据集,另一个基于X列的数据集?是的,即使您使用相同的参数训练模型,因为您使用了不同的列车数据,您将得到两个不同的模型(具有不同的学习权重)请给出否决投票的原因,以便我能够改进/纠正答案,这将有助于社区。