gpt4 book ai didi

python - SVR 预测所有特征的值相同

转载 作者:行者123 更新时间:2023-11-30 09:43:58 25 4
gpt4 key购买 nike

我正在创建一个基本应用程序,根据使用 Python 和 Scikit-learn 的股票 n 的特征来预测股票第 n+1 天的“收盘”值(value)

我的数据框中的示例行如下所示(2000 行)

       Open     Close    High     Low      Volume     
0 537.40 537.10 541.55 530.47 52877.98

类似于此视频https://www.youtube.com/watch?v=SSu00IRRraY ,他在其中使用“日期”和“开盘价”。在此示例中,日期是特征,开盘价是目标。

现在在我的示例中,我的数据集中没有“日期”值,而是想使用开盘价、最高价、最低价、成交量数据作为特征,因为我认为这会使其更加准确

我是这样定义我的功能和目标的

features = df.loc[:,df.columns != 'Closing']
targets = df.loc[:,df.columns == 'Closing']

这会返回一个像这样的 df特点:

       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 的值,但这似乎并没有改变预测始终给出相同值的事实

我知道预测股票价格可能不准确,但是当我将模型应用于各种不同的测试数据时,我一定做错了什么才能得到相同的值

最佳答案

在使用 SVM 进行分类任务之前,您应该标准化您的特征。SVM 通常对非标准化特征敏感。由于您的第 5 个功能比其他 4 个功能大 10,000 倍,因此它确实主导了您的其他功能。

查看此链接,它非常清楚地解释了您的问题:https://stats.stackexchange.com/questions/57010/is-it-essential-to-do-normalization-for-svm-and-random-forest

关于python - SVR 预测所有特征的值相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54967651/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com