测试多列的训练数据框

Posted

技术标签:

【中文标题】测试多列的训练数据框【英文标题】:Test Train Dataframe for multiple columns 【发布时间】:2021-07-19 21:51:03 【问题描述】:

我有一个 csv 文件

Date,Open,High,Low,Close,Adj Close,Volume,Cash EPS,Book Value,Div/share,Net profit/share,NPM,ROE,ROCE,ROA,DEBT/EQ,ATR,CR
2004-04-26,82.924217,82.924217,82.924217,82.924217,60.026066,0,221.24,488.21,129.5,186.6,26.11,38.22,38.22,24.2,0,92.67,1.65
2004-04-27,82.778122,82.778122,79.765625,80.24453,58.086323,28616000,221.24,488.21,129.5,186.6,26.11,38.22,38.22,24.2,0,92.67,1.65

仅给出 2 行以便于计算。我创建了一个数据框

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
from sklearn.preprocessing import MinMaxScaler

dataframe1 = pd.read_csv('test.csv')
df = dataframe1.dropna()
scaler=MinMaxScaler(feature_range=(0,1))
df1=scaler.fit_transform(np.array(df1).reshape(-1,1))
min_max_scaler = MinMaxScaler()
df[["Open", "High", "Low", "Close", "Adj Close", "Volume", "Book Value", "Div/share", "Net profit/share", "NPM", "ROE", "ROCE", "ROA", "DEBT/EQ", "ATR", "CR"]] = min_max_scaler.fit_transform(df[["Open", "High", "Low", "Close", "Adj Close", "Volume", "Book Value", "Div/share", "Net profit/share", "NPM", "ROE", "ROCE", "ROA", "DEBT/EQ", "ATR", "CR"]])

要训练数据集,我需要日期和预测,即关闭列。 但是,关闭列值取决于多个列(即此 csv 中存在的所有列)

如何基于所有其他列训练日期和关闭列的数据,以便预测未来关闭?

【问题讨论】:

您在寻找机器学习算法推荐吗? 不清楚您要做什么。我最好的猜测是您正在尝试根据现有列预测日期 T+1 的收盘价?您是在问如何设置,或者如何进行预测? 在我看来,添加多个输入变量应该不是问题,但这取决于您希望使用哪种算法进行预测 - 您可以使用许多不同的回归/时间序列方法想申请。最常见的允许添加多个数字列进行训练。 如果您正在寻找进行时间序列预测的 ML 模型示例,您可能正在寻找长短期记忆模型:machinelearningmastery.com/… 从简单的线性回归一直到由@TroyD 链接的 LSTM 神经网络。或者来自 statsmodels 的 ARIMA/SARIMAX 也允许外生变量 【参考方案1】:

如果我理解这个问题,您正在寻找一个多变量时间序列模型。换句话说,每个时间步都需要多个变量输入,以便做出前瞻性预测。以下是一些示例的链接:

https://www.relataly.com/stock-market-prediction-with-multivariate-time-series-in-python/1815/

另外,我建议研究一下 Kaggle 股票市场预测竞赛,有数百个例子说明人们如何解决这个问题。

https://www.kaggle.com/c/two-sigma-financial-news

【讨论】:

非常感谢!

以上是关于测试多列的训练数据框的主要内容,如果未能解决你的问题,请参考以下文章

根据唯一ID将pandas数据框划分为测试和训练

试图将我的数据框拆分为具有代表性的训练集和测试集

R:如何将数据框拆分为训练集、验证集和测试集?

大熊猫上的sklearn train_test_split 按多列分层

对训练和测试数据帧使用相同的标签编码器

如何在不拆分数据帧的情况下传递不同的数据集进行训练和测试。 (Python)?