【问题标题】:Stock_Market prediction using Linear regression使用线性回归的 Stock_Market 预测
【发布时间】:2018-08-03 14:18:59
【问题描述】:

我正在尝试在 sklearn 上使用 LinearRegression() 改进股票市场预测模型。首先,我是机器学习的新手,我对代码的工作方式有点挣扎:

df = df[["Adj Close"]] #price of closing
df["prediction"]=df[["Adj Close"]].shift(-int(30)) #creating just for 30 days
X=df.drop(["prediction"],1)
X=preprocessing.scale(X)
X_forecast=X[-int(30):]
X=X[:-int(30)]
y=np.array(df["prediction"])
y=y[:-int(30)]
X_train, X_test, y_train, y_test = cross_validation.train_test_split(X, y, test_size = 0.2) #on fait un test en limitant les données connues et celles inconnues pour eviter l'overfitting
reg=LinearRegression()
reg.fit(X_train,y_train)
forecast_prediction=reg.predict(X_forecast)
print(forecast_prediction)

我不明白如何用这种线性回归来预测某些东西,因为我们在这里只使用一个数据:

np.array(df["prediction"])

【问题讨论】:

    标签: python stock


    【解决方案1】:

    在回答这个问题之前,我必须建议线性回归,尤其是这个特定的线性回归,是一种非常简单的股票价格建模方法,在准确性方面可能没有很大的上升空间。

    这个来自 Kaggle 的特定 script 试图找出股票价格与其正好 30 天前的价格之间的相关性。在 Kaggle 的示例中,我们可以注意到他们的 X 变量是直接从 df[['Adj Close']] 提取的,而他们的 Y 变量是他们称为 label 的列的移位形式(这是您的 df[['prediction']]

    当您在第 3 行设置 X 等于 df.drop(["prediction"],1) 时,您将设置 X 等于数据框中所有其他列的整体(这是错误的)。

    tl;dr:Kaggle 上的示例回归脚本有效,但基本的金融理论并不健全。您的代码与示例脚本存在一些可能导致(未)预见错误的关键差异。

    【讨论】:

    • 感谢您的回答。但我还是不明白你的说法,我故意删除了最后的 30 个条目以获得真实的预测,因为我似乎在 Kaggle 代码中理解的是 X 实际上是我想要预测的真实价格。所以我不太明白为什么要根据我想要获得的数据(未来股票价格)训练我的模型(此处为线性回归)。
    • 我认为 X_lately 是预测集。 Kaggle 代码中的模型只是试图找到当前股票价格与其恰好在 x 天前的价格之间的线性关系。在 Kaggle 上的代码中,x 是 5,而在您的代码中,x 是 30。一旦建立了这种关系,它就会尝试使用它来预测未来的价格。例如,要查找未来 5 天的价格,它只会查看过去 25 天的价格(如果 x = 30)。如您所见,这是一个非常薄弱的​​关系,可能几乎没有相关性。
    猜你喜欢
    • 1970-01-01
    • 2020-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多