import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error
import matplotlib.pyplot as plt

# 读取数据集
data = pd.read_excel('E:\pythonProject5\深度学习\新建 XLS 工作表.xls')

# 选择特征和目标变量
features = data[['开盘', '涨跌额', '涨跌幅', '最低', '最高', '成交量', '成交金额']]
target = data['收盘']

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(features, target, test_size=0.2, random_state=42)

# 训练模型
model = LinearRegression()
model.fit(X_train, y_train)

# 预测股票价格
predictions = model.predict(X_test)

# 对比实际价格进行验证
mse = mean_squared_error(y_test, predictions)
print('均方误差(MSE):', mse)

# 输出预测结果和实际价格
result = pd.DataFrame({'预测价格': predictions, '实际价格': y_test})
print(result)

# 绘制预测价格和实际价格的图像
plt.rcParams['font.sans-serif'] = ['SimHei']  # 指定使用SimHei字体
plt.rcParams['axes.unicode_minus'] = False  # 解决负号显示问题
plt.plot(result.index, result['预测价格'], label='预测价格')
plt.plot(result.index, result['实际价格'], label='实际价格')
plt.xlabel('样本编号')
plt.ylabel('股票价格')
plt.title('预测价格 vs 实际价格')
plt.legend()
plt.show()

代码解读:

  1. 导入必要的库: 包括pandas用于数据处理,sklearn用于模型训练和评估,matplotlib用于可视化。
  2. 读取数据: 使用pandas读取股票数据文件,这里假设数据存储在'E:\pythonProject5\深度学习\新建 XLS 工作表.xls'。
  3. 数据预处理:
    • 选择特征列:'开盘', '涨跌额', '涨跌幅', '最低', '最高', '成交量', '成交金额'作为预测股票价格的特征。
    • 选择目标列:'收盘'作为预测目标。
    • 划分训练集和测试集:使用train_test_split函数将数据集划分为训练集和测试集,测试集占比为20%。
  4. 模型训练:
    • 实例化线性回归模型LinearRegression()
    • 使用训练集数据拟合模型model.fit(X_train, y_train)
  5. 模型预测: 使用训练好的模型预测测试集的股票价格model.predict(X_test)
  6. 模型评估: 使用均方误差(MSE)评估模型预测性能,并打印结果。
  7. 结果可视化:
    • 创建DataFrame存储预测价格和实际价格。
    • 使用matplotlib绘制预测价格和实际价格的折线图,方便直观对比模型预测效果。

解决中文显示问题:

代码中添加了以下两行,指定使用SimHei字体并解决负号显示问题:

plt.rcParams['font.sans-serif'] = ['SimHei']  # 指定使用SimHei字体
plt.rcParams['axes.unicode_minus'] = False  # 解决负号显示问题

注意:

  • 请确保已安装所需库,可以使用pip install pandas scikit-learn matplotlib进行安装。
  • 将代码中的文件路径和文件名替换为实际路径和文件名。
  • 这只是一个简单的线性回归模型,实际应用中可能需要更复杂的模型和特征工程来提高预测精度。
Python股票价格预测:线性回归模型实战

原文地址: https://www.cveoy.top/t/topic/f3EN 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录