【问题标题】:How to apply Monte Carlo cross validation to multiple linear regression in Python?如何将蒙特卡罗交叉验证应用于 Python 中的多元线性回归?
【发布时间】:2019-09-07 15:59:51
【问题描述】:

每个人。

所以,我对 Python 比较陌生,我正在尝试根据 10 个不同的数字输入来预测一个数字变量。特别是,我正在尝试应用多元线性回归,但想在训练-测试-验证阶段添加蒙特卡洛交叉验证。所以,我写了一个看起来像这样的代码:

#I have imported libraries
#imported the dataset
#then created X and Y df. 
#then split the data into training and testing, with validation parameters as follows:

from sklearn.model_selection import train_test_split
X_train, X_test, Y_train, Y_test = train_test_split(X, Y, random_state=np.random.randint(1000), test_size=0.3)

# I have used np.random.randint(1000) as a Monte Carlo cross validation.

The code used for regression is:

#Linear Regression Model
regressor = linear_model.LinearRegression()
regressor.fit(X_train, Y_train)
y_predLR = regressor.predict(X_test)
lin_mse = mean_squared_error(y_predLR, Y_test)
lin_rmse = np.sqrt(lin_mse)

我的问题是:这是应用蒙特卡洛交叉验证的正确方法吗?

在此之后,我应用了 MLR,并且随着代码的每次运行,R 平方、MSE 和其他值都会发生变化,所以我猜 Monte Carlo 有效。如果是这样,有没有办法在每次运行时获得相同的结果,但同时使用 MCCV?

此外,目标是还开发一个 ANN 模型(也与 Monte Carlo 一起),并最终比较 MLR 和 ANN,然后使用开发的最佳模型对未来时期进行预测。我在某个地方读到,预测时不能使用 MCCV,是这样吗?

非常感谢您的宝贵时间。

【问题讨论】:

    标签: python-3.x linear-regression cross-validation montecarlo


    【解决方案1】:

    为了应用 MCCV,您应该多次运行随机生成(不替换)训练集和测试集的过程。

    因此,粗略地说,您需要将代码(生成训练/测试集、学习和预测)插入到 for 循环中。

    注意分区是每次运行独立生成的,因此同一个数据点可以在训练(测试)集中出现多次,这实际上是与 k- 的显着差异折叠交叉验证。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-18
      • 2018-09-06
      • 1970-01-01
      • 2020-04-06
      • 2021-05-06
      • 2021-01-25
      • 1970-01-01
      • 2017-05-27
      相关资源
      最近更新 更多