欢迎来到我的博客,很高兴能够在这里和您见面!欢迎订阅相关专栏:
⭐️ 全网最全IT互联网公司面试宝典:收集整理全网各大IT互联网公司技术、项目、HR面试真题.
⭐️ AIGC时代的创新与未来:详细讲解AIGC的概念、核心技术、应用领域等内容。
⭐️ 大数据平台建设指南:全面讲解从数据采集到数据可视化的整个过程,掌握构建现代化数据平台的核心技术和方法。
⭐️《遇见Python:初识、了解与热恋》 :涵盖了Python学习的基础知识、进阶技巧和实际应用案例,帮助读者从零开始逐步掌握Python的各个方面,并最终能够进行项目开发和解决实际问题。
⭐️《MySQL全面指南:从基础到精通》通过丰富的实例和实践经验分享,带领你从数据库的基本操作入手,逐步迈向复杂的应用场景,最终成为数据库领域的专家。
⭐️ 数据治理:通过通俗易懂的文章,学者们不仅能理解数据治理的重要性,还能掌握数据治理的基本原则和最佳实践。
本部分介绍了机器学习中的监督学习和无监督学习的基本概念,重点讲解了监督学习在量化投资中的应用。通过一个股票涨跌预测的案例,展示了如何利用历史股价数据和技术指标来构建分类模型。我们使用逻辑回归算法对股票的涨跌进行预测,并通过聚宽API获取数据、训练模型和评估效果。这为投资者提供了一种数据驱动的量化投资思路,能够帮助更精准地预测市场动向。
关键词
- 监督学习
- 分类模型
- 逻辑回归
- 股票预测
- 特征工程
1. 机器学习基础:用机器教会电脑辨识模式
1.1 监督学习与无监督学习:先有数据,后有模式
机器学习可以大致分为两类:监督学习和无监督学习。
-
监督学习:它的核心思想是从历史数据中学习一个模型,这些数据已经被标注(即我们知道输入和输出的对应关系)。监督学习的任务通常分为回归和分类问题。例如,我们可以用历史股票的价格来训练模型,预测未来股价(回归问题);或者根据股市的走势和相关特征来判断股票是否会上涨或下跌(分类问题)。
-
无监督学习:与监督学习不同,无监督学习的特点是没有标签数据,模型需要根据输入的数据自行寻找数据中的模式。常见的无监督学习任务包括聚类分析(例如,将股票根据相似的市场表现分为不同的类别)、降维(如主成分分析,PCA)等。
1.2 为什么机器学习能帮助我们进行量化投资
传统的量化投资模型往往依赖于一系列的假设,例如股票价格遵循正态分布,市场是有效的等等。然而,现实中的金融市场是非常复杂的,存在很多非线性的关系、噪声和未知的模式。机器学习通过强大的数据建模能力,能够从大量的数据中自我发现这些复杂的规律,为我们提供更加灵活和精准的预测。
通过机器学习,我们可以分析大量的市场数据(包括价格、财务指标、情绪分析等),训练出一个模型来进行预测。更重要的是,这些模型可以随着数据的不断增加而不断优化,具有自适应的能力。
1.3 监督学习应用:分类模型
我们首先来看看监督学习中的一个经典应用——分类问题。假设你希望通过历史的数据来预测某只股票未来一段时间是否会上涨。股票的涨跌通常是一个二分类问题,涨为1,跌为0。
1.3.1 案例:股票涨跌预测(分类问题)
我们以某只股票的历史数据为例,来构建一个分类模型,预测未来一周内该股票的价格是上涨还是下跌。
首先,我们需要获取一些特征数据,例如股价的技术指标(如移动平均线、相对强弱指数等),以及该股票的财务数据(如市盈率、净资产等)。
接下来,我们将使用逻辑回归来构建这个分类模型。逻辑回归是一种常见的分类算法,适合于二分类问题。
1.3.2 代码实现:股票涨跌预测模型
import jqdatasdk
import pandas as pd
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
import matplotlib.pyplot as plt
# 聚宽API登录
jqdatasdk.auth('your_username', 'your_password')
# 获取股票历史数据,这里以某只股票(假设为“XX科技公司”)为例
stock_code = '000001.XSHE' # 假设股票代码
start_date = '2015-01-01'
end_date = '2023-01-01'
# 获取股票数据(收盘价、换手率、成交量等)
data = jqdatasdk.get_price(stock_code, start_date=start_date, end_date=end_date, frequency='daily', fields=['close', 'volume', 'turnover'])
# 提取特征:计算5日和10日的简单移动平均线
data['SMA5'] = data['close'].rolling(window=5).mean()
data['SMA10'] = data['close'].rolling(window=10).mean()
# 计算未来一周的涨跌
data['target'] = (data['close'].shift(-5) > data['close']).astype(int) # 如果未来5天股价上涨,target为1,反之为0
# 去掉缺失值
data = data.dropna()
# 特征选择:使用当前的收盘价、5日、10日均线作为特征
X = data[['close', 'SMA5', 'SMA10']]
y = data['target']
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
# 训练逻辑回归模型
model = LogisticRegression()
model.fit(X_train, y_train)
# 预测
y_pred = model.predict(X_test)
# 输出准确率
accuracy = accuracy_score(y_test, y_pred)
print(f'模型的准确率: {accuracy:.2f}')
# 可视化预测结果
plt.figure(figsize=(10,6))
plt.plot(y_test.values[:100], label='真实值', linestyle='-', color='blue')
plt.plot(y_pred[:100], label='预测值', linestyle='dashed', color='red')
plt.legend()
plt.title(f'{stock_code} 未来股价涨跌预测')
plt.show()
1.4 代码解读
- 数据获取: 同样,我们通过聚宽API获取了"XX科技公司"的历史股价数据,选择了收盘价、换手率等基本特征。
- 特征工程: 我们计算了股票的5日和10日简单移动平均线(SMA),作为模型的特征。这些技术指标常被用于衡量股票价格的趋势。
- 目标变量: 目标变量
target
表示未来5天股票价格是否会上涨。如果股价上涨,target
为1,否则为0。 - 模型训练: 我们使用逻辑回归模型来进行预测,模型通过训练历史数据,学习到股价涨跌的规律。
- 预测与评估: 使用测试集数据对模型进行评估,并计算出预测的准确率。最后,我们绘制了真实涨跌与预测涨跌的对比图。
1.5 结果分析
通过模型训练和预测,我们得到了一个基于历史数据和技术指标的股票涨跌预测模型。通过准确率(accuracy_score
)来评估模型的效果,如果准确率较高,则说明模型在一定程度上能够捕捉到股市的规律。
当然,实际应用中,我们可以使用更复杂的模型(如支持向量机、随机森林等),并增加更多的特征(如宏观经济数据、行业数据、情绪分析等)来提高预测的准确性。
1.6 总结
在这一部分,我们介绍了机器学习中的监督学习和无监督学习两大类方法,并通过一个具体的案例——股票涨跌预测,展示了如何使用逻辑回归模型来进行分类任务。通过特征工程、模型训练和评估,我们为读者展示了如何通过机器学习模型在量化投资中进行决策。掌握这些基础知识是进一步构建复杂模型和策略的前提。
💗💗💗💗💗💗💗💗💗💗💗💗
💗💗💗💗💗💗💗💗💗💗💗💗