尽管我尽了最大的努力,但我还没有找到这个问题的答案。
\nI\xe2\x80\x99m 希望使用 Python 3.6 和 TensorFlow 简单地训练 LSTM 网络,使用多个 .csv 文件/数据集,例如使用多家公司的历史股票数据。
\n这样做的原因是我想让模型适应各种价格范围,而不是在每个数据集上训练单独的模型。我该怎么做呢?
\n我可以\xe2\x80\x99t 只是将一个数据集附加到另一个创建 1 个大数据集,因为在训练/测试拆分期间,价格可能会从 2 美元跳到 200 美元,具体取决于库存数据以及数据集缝合在一起的位置。
\n做这样的事情的最佳实践是什么?
\n只需为每个 .csv 文件创建一个循环,然后调用 .fit 函数,对每个文件依次进行一定数量的训练(更新其权重),并在找到最佳损失后使用早期停止?(我现在明白该怎么做了。)
\n有没有一种方法可以创建一个生成器,可以以某种方式从每个 .csv 生成不同的 x_train 和 y_train 元组,将模型与每个元组拟合,然后在从每个 .csv 文件中采样一个元组后有一个训练检查点?我的想法是,模型应该有机会在完成一个纪元之前从每个数据集中采样一部分。
\n示例:let\xe2\x80\x99s 说我想使用 20 周期回溯/窗口大小来预测未来 t+1,并且我有 5 个 .csv 文件可供训练。生成器(理想情况下)将所有数据集加载到内存中,然后从第一个 .csv 文件中随机抽取 20 行样本,将其拟合到模型中,然后从第二个 .csv 文件中抽取另外 20 行,进行拟合,等等,然后一旦对所有 5 个样本进行了采样,就通过检查点来评估损失,然后进入下一个 epoch 并重新进行一遍。
\n这可能有点矫枉过正,但想要彻底。如果选项 1. 能完成同样的事情,那么 \xe2\x80\x99 对我来说也很好,我只是还没有 \xe2\x80\x99t 找到答案。
\n谢谢!
\n更新 …
我真的很难尝试启动和运行我的这个项目,但是我仍然保持弹性,我想我已经接近了!
我正在尝试自定义此项目以使用我自己的数据集:
https://github.com/notadamking/Bitcoin-Trader-RL
基本上,该项目使用股票价格的OHLCV数据集进行训练和交易,但是我想使用一天的报价数据集,而不是使用项目中提供的OHLCV .csv文件多的列。包括时间,打开,关闭,最后一个,最后一个大小,出价,BidSize,询问,AskSize,交易量)。它将.csv文件内容放入其自己的数组中,然后使用MinMaxScaler将所有点转换为相对于其所在列的值在0-1之间的值。
我收到以下完整错误,我希望知道这里发生什么的人能够发现我所缺少的东西:
Traceback (most recent call last):
File "main.py", line 23, in <module>
model.learn(total_timesteps=200000)
File "c:\users\windowshopr\desktop\python scripts\all tools\stable-baselines-master\stable_baselines\a2c\a2c.py", line 231, in learn
runner = A2CRunner(self.env, self, n_steps=self.n_steps, gamma=self.gamma)
File "c:\users\windowshopr\desktop\python scripts\all tools\stable-baselines-master\stable_baselines\a2c\a2c.py", line 310, in __init__
super(A2CRunner, self).__init__(env=env, model=model, n_steps=n_steps)
File "c:\users\windowshopr\desktop\python scripts\all tools\stable-baselines-master\stable_baselines\common\runners.py", line 19, in __init__
self.obs[:] = env.reset()
File "c:\users\windowshopr\desktop\python scripts\all tools\stable-baselines-master\stable_baselines\common\vec_env\dummy_vec_env.py", line 45, in reset
obs = self.envs[env_idx].reset()
File "C:\Users\windowshopr\Desktop\Current Python Project\1 - Matt's Bitcoin Trader (level 1)\env\BitcoinTradingEnv.py", line 90, in reset …
Run Code Online (Sandbox Code Playgroud) 我已经通读了几页,但需要有人帮助解释如何进行这项工作。
我正在使用TPOTRegressor()
以获得最佳管道,但从那里我希望能够绘制.feature_importances_
它返回的管道:
best_model = TPOTRegressor(cv=folds, generations=2, population_size=10, verbosity=2, random_state=seed) #memory='./PipelineCache', memory='auto',
best_model.fit(X_train, Y_train)
feature_importance = best_model.fitted_pipeline_.steps[-1][1].feature_importances_
Run Code Online (Sandbox Code Playgroud)
我在 Github 上的一个现已关闭的问题中看到了这种设置,但目前我收到错误消息:
Best pipeline: LassoLarsCV(input_matrix, normalize=True)
Traceback (most recent call last):
File "main2.py", line 313, in <module>
feature_importance = best_model.fitted_pipeline_.steps[-1][1].feature_importances_
AttributeError: 'LassoLarsCV' object has no attribute 'feature_importances_'
Run Code Online (Sandbox Code Playgroud)
那么,我如何从最佳管道中获得这些特征重要性,而不管它落在哪个管道上?或者这甚至可能吗?或者有人有更好的方法来尝试从 TPOT 运行中绘制特征重要性吗?
谢谢!
更新
为澄清起见,特征重要性的含义是确定数据集的每个特征 (X) 在确定预测 (Y) 标签方面的重要性,使用条形图绘制每个特征在得出其预测时的重要性级别。TPOT 不直接执行此操作(我不认为),所以我想我会抓住它提出的管道,在训练数据上重新运行它,然后以某种方式使用 a.feature_imprtances_
然后能够绘制图形特征重要性,因为这些都是我正在使用的 sklearn 回归器?
python ×2
python-3.x ×2
scikit-learn ×2
numpy ×1
pandas ×1
pipeline ×1
regression ×1
tensorflow ×1
tpot ×1