志学老人学Ai 和量化交易8:机器学习算法,线性回归、随机森林等

1978年,恢复高考,改革开放,经过考试,进入了上海第二工业大学数据处理专业本科学习。我们班上的同学来自于上海计算机研究所,上海计算机厂,各大上海著名医院的计算中心等单位。大多数同学都是历届老高三,基础知识很扎实。我相信,班上许多同学的高中学习基础,考清华北大是不成问题的。主要有许多人结婚成家,有孩子,希望照顾家庭,不願离开上海,所以,投考上海业余工业大学,后才改为上海第二工业大学,人事关系还在原单位, 工資照拿。当时,考上这种大学,热门专业,录取率低,真是难上加难。

我的毕业论文课题是数据处理在柴油机曲拐的设计中的应用。这也是柴油机设计中的首创,提高了惊人设计效率, 得到上海交通大学内燃机专业论文答辩教授的好评。

在四年的学习中,我们学习了数据处理和机器算法学习的绒性回归,非线性回归以及随机过程中的卷积,自相关和互相关等函数。到美国工程研究生院我又重复学习了卷积,互相关函数在系统工程中的应用。

在股票量化交易中,机器学习算法不再依赖固定的均线规则,而是通过历史数据自动寻找价格规律。我们通常将下个周期的涨跌预测转化为一个回归问题,预测具体价格/收益率,或分类问题,预测涨/跌。.

如何使用 线性回归(Linear Regression) 和 随机森林(Random Forest) 两种经典算法构建一个基础的量化预测模型。

在Python中,我们必确保安装机器学习核心库(pip install pandas numpy scikit-learn matplotlib)。以下这代码Python 机器学习量化完整演示了特征工程、模型训练到预测对比的工作流程。

import matplotlib.pyplot as plt

import numpy as np

import pandas as pd

from sklearn.ensemble import RandomForestRegressor

from sklearn.linear_model import LinearRegression

from sklearn.metrics import mean_squared_error

from sklearn.model_selection import train_test_split

# 1. 模拟生成 300 天的股票数据与特征工程

np.random.seed(42)

days = 300

price = 100.0 + np.cumsum(np.random.normal(0.1, 1.5, days))

df = pd.DataFrame({"Close": price})

# 构造特征:用前 1 天、前 2 天、前 3 天的收盘价作为线索

df["Close_Lag1"] = df["Close"].shift(1)

df["Close_Lag2"] = df["Close"].shift(2)

df["Close_Lag3"] = df["Close"].shift(3)

# 目标:预测明天的收盘价

df["Target"] = df["Close"].shift(-1)

# 清洗空值

df = df.dropna()

# 划分特征矩阵 X 和目标向量 y

X = df[["Close_Lag1", "Close_Lag2", "Close_Lag3"]]

y = df["Target"]

# 2. 严格按时间顺序划分训练集 (80%) 与测试集 (20%)

# 量化中不可使用随机切分(train_test_split的shuffle=True),否则会导致未来函数(数据泄漏)

split_idx = int(len(df) * 0.8)

X_train, X_test = X.iloc[:split_idx], X.iloc[split_idx:]

y_train, y_test = y.iloc[:split_idx], y.iloc[split_idx:]

# 3. 初始化并训练模型

# 模型 A:线性回归(捕捉线性趋势)

lr_model = LinearRegression()

lr_model.fit(X_train, y_train)

# 模型 B:随机森林(捕捉非线性复杂关系)

rf_model = RandomForestRegressor(n_estimators=50, random_state=42)

rf_model.fit(X_train, y_train)

# 4. 在测试集上进行预测

lr_preds = lr_model.predict(X_test)

rf_preds = rf_model.predict(X_test)

# 5. 评估模型误差 (均方误差 MSE,越小越好)

print(f" 线性回归测试集 MSE: {mean_squared_error(y_test, lr_preds):.4f}")

print(

f" 随机森林测试集 MSE: {mean_squared_error(y_test, rf_preds):.4f} "

)

# 6. 可视化预测结果对比

plt.figure(figsize=(12, 6))

plt.plot(y_test.values, label="Actual Price", color="black", linewidth=2)

plt.plot(lr_preds, label="Linear Regression Predict", color="blue", linestyle="--")

plt.plot(rf_preds, label="Random Forest Predict", color="red", linestyle="-.")

plt.title("Machine Learning Quant: Price Prediction Demostration")

plt.xlabel("Days (Test Set)")

plt.ylabel("Stock Price")

plt.legend()

plt.grid(True)

plt.show()

运行操作这代码在PyCharm软件中:

运行机器学习算法代码

並得到了演示的良好结果。见下列图片。

线性回归和隨机森林

本人此文不作任何股票投资推荐,仅作学习参考和交流。

徐志学写于美国洛杉矶,8/16/2026

展开阅读全文

更新时间:2026-08-24

标签:科技   线性   算法   机器   森林   上海   模型   数据处理   卷积   特征   测试

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight All Rights Reserved.
Powered By 61893.com 闽ICP备11008920号
闽公网安备35020302035593号

Top