四十多个指标下传统机器学习分类模型预测股价涨跌

本文探讨了SVM、决策树和随机森林在40+股市指标下,预测茅台股票涨跌的效能,发现随机森林在测试集上效果最佳,但提升空间有限,暗示需要更高效的学习方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

股票市场风起云涌,只有对股价有良好的预测才能够更好的抓住盈利机会。那么传统的机器学习分类模型在这方面的效果如何呢?

本文考虑了移动平均值、指数移动平均值、DMI、MACD、KDJ、RSI等四十多个指标的情况下,比较了支持向量机、决策树、随机森林三种模型预测股价涨跌的效果

免责声明

此构想和分析中的任何内容均不应解释为投资建议,过去的表现并不一定表示未来的结果。

支持向量机、决策树、随机森林模型预测股价



我们统一选择茅台股票(600519)作为研究对象,数据日期范围为2020-01-01到2020-12-30。统一采用最后55天数据作为测试集,最后64天前的数据作为训练集



支持向量机

支持向量机(SVM)是一类按监督学习方式对数据进行二元分类的广义线性分类器,其决策边界是对学习样本求解的最大边距超平面

为了增加模型的非线性,采用RBF核函数,模型的效果如下
相比前一篇文章只使用六项指标的情况下,从42.47%的准确率提高到了49.9%。
在这里插入图片描述



决策树

决策树(Decision Tree)是在已知各种情况发生概率的基础上,通过构成决策树来求取净现值的期望值大于等于零的概率,评价项目风险,判断其可行性的决策分析方法,是直观运用概率分析的一种图解法。由于这种决策分支画成图形很像一棵树的枝干,故称决策树。在机器学习中,决策树是一个预测模型,他代表的是对象属性与对象值之间的一种映射关系

定义数的深度为5,模型效果如下
相比上一篇只使用六项指标的情况,总体来看还是有一定提升的
训练集上准确率从 77.53% 大幅提高到了 97.66%
测试集上准确率从 56.25% 提高了一点为 56.36%
但是召回率从 53.53% 提高到了 56.35%
在这里插入图片描述



随机森林

随机森林是一个包含多个决策树的分类器, 并且其输出的类别是由个别树输出的类别的众数而定

定义树的深度为5,随机树的数目为10,模型效果如下
相比上一篇只使用六项指标的情况,总体来看还是有一定提升的
训练集上准确率从 86.52% 大幅提高到了 100%
测试集上准确率从 57.81% 提高了一点为 58.18%
但是召回率从 56.76% 提高到了 58.40%
在这里插入图片描述



总结

经过简单的测试,随机森林的效果相对来说最优

但是预测效果仍然存在很大的问题,提升效果很微小,说明需要更加合适的机器学习方法

对于涨跌预测,我们可以使用机器学习中的分类算法来实现。下面是一个简单的Python代码示例,使用逻辑回归算法来预测股票收益的涨跌。 首先,我们需要导入必要的库和数据集。在这个例子中,我们使用的是Pandas库中的一个股票数据集。 ```python import pandas as pd from sklearn.linear_model import LogisticRegression from sklearn.model_selection import train_test_split # 导入数据集 data = pd.read_csv('stock_data.csv') ``` 接下来,我们需要对数据进行预处理,将其转换为适合于训练机器学习模型的形式。在这个例子中,我们将选择一些特征来训练模型,例如前一天的收盘价、开盘价、最高价、最低价等。我们将使用这些特征来预测当天的股票收益的涨跌。 ```python # 选择特征 X = data[['Close', 'Open', 'High', 'Low']] # 将涨跌转换为二进制变量 data['Return'] = data['Return'].apply(lambda x: 1 if x > 0 else 0) y = data['Return'] ``` 接下来,我们将数据集分为训练集和测试集,以便评估模型的准确性。 ```python # 将数据集分为训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) ``` 现在,我们可以训练逻辑回归模型并进行预测。 ```python # 训练模型 model = LogisticRegression() model.fit(X_train, y_train) # 进行预测 y_pred = model.predict(X_test) ``` 最后,我们可以使用准确率指标来评估模型的准确性。 ```python # 计算准确率 accuracy = model.score(X_test, y_test) print('Accuracy:', accuracy) ``` 完整代码如下: ```python import pandas as pd from sklearn.linear_model import LogisticRegression from sklearn.model_selection import train_test_split # 导入数据集 data = pd.read_csv('stock_data.csv') # 选择特征 X = data[['Close', 'Open', 'High', 'Low']] # 将涨跌转换为二进制变量 data['Return'] = data['Return'].apply(lambda x: 1 if x > 0 else 0) y = data['Return'] # 将数据集分为训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) # 训练模型 model = LogisticRegression() model.fit(X_train, y_train) # 进行预测 y_pred = model.predict(X_test) # 计算准确率 accuracy = model.score(X_test, y_test) print('Accuracy:', accuracy) ``` 请注意,这只是一个简单的例子,实际情况中可能需要更多的特征和更复杂的算法来预测股票收益的涨跌
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

君名余曰正则

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值