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
本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828
© CopyRight All Rights Reserved.
Powered By 61893.com 闽ICP备11008920号
闽公网安备35020302035593号