ee8*_*291 5 python machine-learning scikit-learn
我是 Python ML 的新手,正在通过教程尝试我的第一次尝试。在那个教程中,有一些代码行我很难理解它们是如何相互交互的。
第一个代码是发生的数据拆分如下:
train_x, val_x, train_y, val_y = train_test_split(X, y,test_size=0.3)
Run Code Online (Sandbox Code Playgroud)
我的第一个问题:为什么我们使用验证数据而不是测试数据?为什么不是全部,train、val 和 test?使用哪种组合的用例是什么?
下一节详细说明 ML 模型和预测。
model = DecisionTreeRegressor()
model.fit(train_x, train_y)
val_predictions = model.predict(val_x)
Run Code Online (Sandbox Code Playgroud)
我的第二个问题:对于 model.predict() 语句,为什么我们将 val_x 放在那里?我们不想预测 val_y 吗?
附加问题:此外,在许多教程中,我看到了如何应用 StandardScalers。但是,在本教程中,它并没有出现,或者其他一些函数是否已经对其进行了缩放而无需明确说明?请帮忙。
问 1.1:为什么我们使用验证数据而不是测试数据?(在上述场景中)
train_x, val_x, train_y, val_y = train_test_split(X, y,test_size=0.3)
Run Code Online (Sandbox Code Playgroud)
首先,术语验证集和测试集在许多教程中使用得非常宽松,有时甚至可以互换。很可能将上面的内容
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) # contains y values predicted by the model
score = model.score(val_x, val_y) # evaluates predicted y against actual y of test data
print(score)
Run Code Online (Sandbox Code Playgroud)
Q 2. : 对于 model.predict() 语句,为什么我们要把 val_x 放在那里?我们不想预测 val_y 吗?
我们想要预测 绝对正确val_y,但模型需要val_x预测 y。这正是我们作为参数传递给预测函数的内容。
我知道阅读起来可能会令人困惑
modelpredictval_x。所以更好的方法是解释它,
model你可以predict从val_x,然后返回predicted_y。
我说predicted_y不是val_y因为两者不会完全相同。他们有多少不同?这就是分数给出的。
一些术语
问 1.3:使用哪种组合的用例是什么?
你总是会进行训练和测试,或者三者兼而有之。但是,在您的情况下,测试仅命名为 val。
额外问题:在许多教程中我看到了如何应用 StandardScalers。然而,在本教程中它并没有这样出现,或者其他一些函数是否已经对其进行了缩放而无需明确说明?
这一切都取决于您的数据。如果数据经过预处理并且全部缩放正确,则不需要应用 StandardScalers。这个特定的教程只是意味着数据已经相应地标准化。
| 归档时间: |
|
| 查看次数: |
3567 次 |
| 最近记录: |