【发布时间】:2020-05-19 00:19:09
【问题描述】:
我是 python 和 Keras 的新手,请耐心等待我的问题。
我最近在 Keras 中创建了一个模型,对其进行了训练并获得了“均方误差 MSE”后预测。我在使用的数据集上使用了 train_test_split 函数。
接下来,我创建了一个包含 50 次迭代的 while 循环,并将其应用于上述模型。但是,我将 train_test_split 函数(未指定 *random_number)保留在循环中,这样在每次迭代中我都会有一组新的 X_train、y_train、X_test 和 y_test 值。我获得了 50 个 MSE 值作为输出并计算了它们的“平均值”和“标准”偏差。 我的问题是通过将 train_test_split 函数放在循环中,我做对了吗?这是否会影响我的目标,即查看为我的数据集生成的不同 MSE 值?
如果我将 train_test_split 函数放在我的 while 循环之外并执行上述活动,那么 X_train、y_train、X_test 和 y_test 值在我的所有 50 次迭代中不会保持不变吗?这不会导致我的模型出现过拟合问题吗?
非常感谢您的反馈。
我的代码sn-p:
from sklearn.model_selection import train_test_split
from sklearn import metrics
import numpy as np
MSE=np.zeros(50)
for i in range(50):
predictors_train,predictors_test,target_train,target_test=train_test_split(predictors,target,test_size=0.3)
model=regression_model()
model.fit(predictors_train,target_train,validation_data=(predictors_test,target_test),epochs=50,verbose=0)
model.evaluate(predictors_test,target_test, verbose=0)
target_predicted=model.predict(predictors_test)
MSE[i]=metrics.mean_squared_error(target_test, target_predicted)
print("Test set MSE for {} cycle:{}".format(i+1,MSE[i]))
【问题讨论】:
-
regression_model()是什么? -
您好,很高兴收到您的来信。 Regression_model() 是我定义的一个函数,它包含我的 Keras 网络,该网络由 2 个密集层和 10 个节点组成,每个节点都有 adam 作为优化,mse 作为损失参数。
标签: python tensorflow machine-learning keras data-science