0
点赞
收藏
分享

微信扫一扫

python预测600519股价涨跌

用Python预测600519)的股价涨跌,我们可以采用时间序列预测模型,如Facebook的Prophet模型或Long Short-Term Memory (LSTM) 神经网络。由于Prophet更适合初学者且更易于使用,我们将使用Prophet进行股价预测。

以下是步骤:

  1. 获取股票数据。
  2. 导入必要的库并加载数据。
  3. 对数据进行预处理,使其适合Prophet模型。
  4. 训练Prophet模型并进行预测。
  5. 评估模型并进行可视化。

步骤 1: 获取股票数据

可以使用库从Yahoo Finance获取贵州茅台的股票数据。

pip install yfinance
pip install prophet

步骤 2: 导入必要的库并加载数据

import yfinance as yf
import pandas as pd
from prophet import Prophet
import matplotlib.pyplot as plt

# 下载股票数据
ticker = '600519.SS'  # 在上海证券交易所的股票代码
data = yf.download(ticker, start='2020-01-01', end='2023-12-31')

# 查看数据
print(data.head())

步骤 3: 对数据进行预处理

Prophet要求数据框必须包含两列:ds(日期)和 y(数值)。我们需要确保数据框符合这个格式。

# 选择收盘价作为预测目标,并重命名列以适应Prophet的要求
data = data.reset_index()
data.rename(columns={'Date': 'ds', 'Close': 'y'}, inplace=True)

# 查看数据
print(data.head())

步骤 4: 训练Prophet模型并进行预测

# 初始化Prophet模型
model = Prophet()

# 拟合模型
model.fit(data)

# 创建未来的数据框(未来30天)
future = model.make_future_dataframe(periods=30)

# 进行预测
forecast = model.predict(future)

# 查看预测结果
print(forecast[['ds', 'yhat', 'yhat_lower', 'yhat_upper']].tail())

# 可视化预测结果
fig1 = model.plot(forecast)
plt.show()

步骤 5: 评估模型并进行可视化

可以通过可视化实际值和预测值来评估模型。

# 合并预测结果和原始数据
merged = pd.merge(data, forecast[['ds', 'yhat', 'yhat_lower', 'yhat_upper']], on='ds', how='left')

# 可视化结果
fig, ax = plt.subplots(figsize=(10, 6))

ax.plot(merged['ds'], merged['y'], label='Actual')
ax.plot(merged['ds'], merged['yhat'], label='Forecast')
ax.fill_between(merged['ds'], merged['yhat_lower'], merged['yhat_upper'], color='gray', alpha=0.2)

plt.legend()
plt.show()

完整代码

import yfinance as yf
import pandas as pd
from prophet import Prophet
import matplotlib.pyplot as plt

# 下载贵州茅台的股票数据
ticker = '600519.SS'  # 贵州茅台在上海证券交易所的股票代码
data = yf.download(ticker, start='2020-01-01', end='2023-12-31')

# 选择收盘价作为预测目标,并重命名列以适应Prophet的要求
data = data.reset_index()
data.rename(columns={'Date': 'ds', 'Close': 'y'}, inplace=True)

# 初始化Prophet模型
model = Prophet()

# 拟合模型
model.fit(data)

# 创建未来的数据框(未来30天)
future = model.make_future_dataframe(periods=30)

# 进行预测
forecast = model.predict(future)

# 合并预测结果和原始数据
merged = pd.merge(data, forecast[['ds', 'yhat', 'yhat_lower', 'yhat_upper']], on='ds', how='left')

# 可视化结果
fig, ax = plt.subplots(figsize=(10, 6))

ax.plot(merged['ds'], merged['y'], label='Actual')
ax.plot(merged['ds'], merged['yhat'], label='Forecast')
ax.fill_between(merged['ds'], merged['yhat_lower'], merged['yhat_upper'], color='gray', alpha=0.2)

plt.legend()
plt.show()


a. 尝试运行上述代码来验证其功能。
b. 使用LSTM模型进行预测,并比较其与Prophet模型的性能。

举报

相关推荐

0 条评论