model.fit vs model.predict – 差异与在sklearn中的使用

我刚开始学习Python机器学习,并通过一个教程尝试了我的第一次尝试。在那个教程中,有一些代码行,我很难理解它们是如何相互作用的。

首先,数据的分割如下所示:

train_x, val_x, train_y, val_y = train_test_split(X, y,test_size=0.3)

我的第一个问题: 为什么我们使用验证数据而不是测试数据?为什么不使用全部的训练、验证和测试数据?使用哪种组合的用例是什么?

下一部分指定了机器学习模型并进行预测。

model = DecisionTreeRegressor() model.fit(train_x, train_y)val_predictions = model.predict(val_x)

我的第二个问题: 对于model.predict()语句,为什么我们要在其中放入val_x?我们不是想要预测val_y吗?

附加问题: 此外,我在许多教程中看到如何应用StandardScalers。然而,在这个教程中似乎没有这样做,或者是否有其他函数已经在不明确声明的情况下对其进行了缩放?请帮助解答。


回答:

Q 1.1 : 为什么我们使用验证数据而不是测试数据? (在上述场景中)

train_x, val_x, train_y, val_y = train_test_split(X, y,test_size=0.3)

首先,验证集和测试集这两个术语在许多教程中使用得很随意,有时甚至可以互换。完全有可能将上面的val_x, val_y称为test_x, test_y

Q 1.2 : 为什么不使用所有的训练、验证和测试数据? (为什么要分割?)

我们所有的机器学习算法都将用于一些真实世界的数据(指的是实际的测试数据)。然而,在设计出算法之后,我们想要“测试”它的表现如何,准确率是多少,等等。

实际上我们目前没有真实世界的数据!对吗?

但是我们有什么?训练数据!所以我们聪明地将其中的一部分(分割)留下来,以便稍后测试算法。测试数据用于在模型准备好后评估其表现。

model = DecisionTreeRegressor() model.fit(train_x, train_y)val_predictions = model.predict(val_x) # 包含模型预测的y值score = model.score(val_x, val_y) # 评估预测的y与测试数据的实际yprint(score)

Q 2. : 对于model.predict()语句,为什么我们要在其中放入val_x?我们不是想要预测val_y吗?

绝对正确,我们想要预测val_y,但模型需要val_x来预测y。这正是我们传递给预测函数的参数。

我理解阅读model predict val_x可能会让人感到困惑。

所以更好的解释方式是,model 你能请predictval_x中,并返回predicted_y吗?

我说predicted_y而不是val_y,因为这两者不会完全相同。它们有多大差异?这就是score给出的信息。

一些术语

  • 数据集 : 手头的数据。后来会将这些数据进行分割
  • 训练集 : 数据集的一部分,我们的模型从中学习。通常较大,约70-80%。通常用train_x和train_y表示。
  • 测试集 : 数据集的一部分,我们将其留出来评估模型的表现。这“测试”了模型,因此得名。用test_x和test_y表示。
  • 验证集 : 如果我们在学习过程中想要无偏见的准确率估计,我们使用数据集的另一个分割。通常用于寻找超参数等。典型的用途包括
    • 选择表现最佳的算法(NB vs DT vs..)
    • 微调参数(树的深度,kNN中的k,SVM中的c)

Q 1.3 : 使用哪种组合的用例是什么?

你总是会有训练与测试,或三者都有。然而在你的案例中,测试只是被命名为val。

附加问题 : 在许多教程中我看到如何应用StandardScalers。然而,在这个教程中似乎没有这样做,或者是否有其他函数已经在不明确声明的情况下对其进行了缩放?

这完全取决于你的数据。如果数据已经被预处理且适当缩放,则无需应用StandardScalers。这个特定的教程只是暗示数据已经相应地进行了归一化处理。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注