我正在创建一个基本应用程序来预测第 n+1 天股票的“收盘价”,给定股票 n 的特征,使用 Python 和 Scikit-learn
我的数据框中的示例行如下所示(2000 行)
Open Close High Low Volume
0 537.40 537.10 541.55 530.47 52877.98
与此视频类似,他使用“日期”和“开盘价”。在此示例中,日期是特征,开盘价是目标。
现在在我的示例中,我的数据集中没有“日期”值,而是希望使用 Open、High、Low、Volume 数据作为特征,因为我认为这会使其更准确
我是这样定义我的功能和目标的
features = df.loc[:,df.columns != 'Closing']
targets = df.loc[:,df.columns == 'Closing']
这将返回一个看起来像这样的功能:
Open High Low Vol from
29 670.02 685.11 661.09 92227.36
目标:
Close
29 674.57
但是我意识到数据需要在一个 numpy 数组中,所以我现在得到了我的特性和目标
features = df.loc[:,df.columns != 'Closing'].values
targets = df.loc[:,df.columns == 'Closing'].values
所以现在我的功能看起来像这样
[6.70020000e+02 6.85110000e+02 6.61090000e+02 9.22273600e+04
6.23944806e+07]
[7.78102000e+03 8.10087000e+03 7.67541000e+03 6.86188500e+04
5.41391322e+08]
我的目标看起来像这样
[ 674.57]
[ 8042.64]
然后我使用拆分我的数据
X_training, X_testing, y_training, y_testing = train_test_split(features, targets, test_size=0.8)
我尝试遵循 Scikit-Learn 文档,结果如下
svr_rbf = svm.SVR(kernel='rbf', C=100.0, gamma=0.0004, epsilon= 0.01 )
svr_rbf.fit(X_training, y_training)
predictions = svr_rbf.predict(X_testing)
print(predictions)
我假设这将预测给定测试特征的 Y 值,然后我可以根据实际 y_testing 值绘制它以查看它们的相似程度。但是,预测会为每个 X_testing 特征打印出相同的值。
[3763.84681818 3763.84681818 3763.84681818 3763.84681818 3763.84681818
我试过改变 epsilon、c 和 gamma 的值,但这似乎并没有改变预测总是给出相同值的事实
我知道预测股票价格可能不准确,但是在将模型应用于各种不同的测试数据时,我一定做错了才能得到相同的值