m0_74420115 2024-05-07 18:18 采纳率: 71.9%
浏览 3

python预测股票价格

这是我的代码,用线性回归的方法来预测股票价格,怎么在后面加上一段代码,让实际的股票价格和预测的股票价格画到一张图上进行对比

import pandas as pd
def parse_date(date_string):
    return pd.Timestamp(date_string.replace('_', '-'))
df = pd.read_csv('D:/LSTMdata.csv', index_col='Date', parse_dates=True, date_parser=parse_date)
df.sort_index(inplace=True)
predict_count = int(len(df)*0.02)
df['label'] = df['Close'].shift(-predict_count)
X = df.drop(['label'],axis=1)
y = df['label'][:-predict_count]
from sklearn.preprocessing import StandardScaler
scale = StandardScaler()
scale.fit(X)
X = scale.transform(X)
X_lately = X[-predict_count:]
X = X[:-predict_count]
from sklearn.model_selection import train_test_split
x_train, x_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
from sklearn.linear_model import LinearRegression
model = LinearRegression()
model.fit(x_train, y_train)
model.score(x_test, y_test)
predict = model.predict(X_lately)
import numpy as np
df['predict'] = np.nan
import datetime
# print(df.index[-1])
last_date_st = df.index[-1].timestamp()
next_date_st = last_date_st + 86400

# print(next_date)

for i in predict:
    next_date = datetime.datetime.fromtimestamp(next_date_st)
    df.loc[next_date] = [np.nan for _ in range(len(df.columns)-1)] + [i]
    next_date_st +=  86400

  • 写回答

3条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2024-05-07 18:18
    关注

    引自免费微信小程序:皆我百晓生

    为了将实际的股票价格与预测的股票价格在同一张图上进行对比,你需要对数据做一些整理,并使用matplotlib库来绘制图形。以下是修改后的代码段,包含了绘制图表的部分:

    import matplotlib.pyplot as plt
    import seaborn as sns
    
    # 完整的代码
    sns.set_theme(style="darkgrid")
    plt.figure(figsize=(15, 7))
    
    # 将数据框中的日期列转换为datetime对象
    df['Date'] = pd.to_datetime(df['Date'])
    
    # 对数据框按日期排序
    df.sort_values(by='Date', inplace=True)
    
    # 添加预测的价格列
    df['Predicted Close'] = df['predict']
    
    # 只保留实际收盘价和预测价格的数据
    df_plot = df[['Date', 'Close', 'Predicted Close']]
    
    # 绘制实际收盘价和预测价格的折线图
    ax = df_plot.plot(x='Date', y=['Close', 'Predicted Close'],
                      title='Actual vs Predicted Stock Prices',
                      figsize=(15, 7), grid=True,
                      marker='o', linestyle='-', legend=True)
    
    # 设置x轴标签为日期
    ax.xaxis.set_major_locator(plt.MaxNLocator(10))
    ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m-%d'))
    
    # 设置美观的显示格式
    plt.gcf().autofmt_xdate()
    plt.tight_layout()
    
    plt.show()
    

    这段代码首先导入了matplotlib.pyplot和seaborn库,然后对数据进行了整理,包括将日期列转换为datetime类型、添加预测价格列以及只保留需要的列。接着,它创建了一个新的DataFrame df_plot,仅包含日期、实际收盘价和预测价格。

    最后,通过调用df_plot.plot()函数,我们绘制了两个折线图:一个代表实际收盘价,另一个代表预测价格。同时设置了标题、网格、标记样式和线型,并启用了图例。我们还调整了x轴的标签显示格式,使其更易读。运行这段代码后,你会看到一个展示实际股票价格与预测价格对比的图形。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 5月7日