我如何在 python 中解决这个错误Jupyter notebook 中的代码

问题描述

我在三月份创建了这个程序,当时运行良好,但现在出现错误,我不知道为什么。

the error it shows

how it looked when it was working

这是当前的非工作代码(我在 Jupiter notebook 上编码)

import yfinance as yf
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import datetime
import seaborn
from sklearn.model_selection import train_test_split
from sklearn import preprocessing
from sklearn.linear_model import LinearRegression
pd.options.mode.chained_assignment = None  # default='warn'


df = yf.download("spy")
df.to_csv('spy.csv')
df = df[['Adj Close']]
plt.plot(df)

df['Adj Close'].plot(figsize=(15,6),color = 'g')
plt.legend(loc='upper left')
plt.show()


forecast = 70
df['Prediction'] = df[['Adj Close']].shift(-forecast)
X = np.array(df.drop(['Prediction'],1))
X = preprocessing.scale(X)            
X_forecast = X[-forecast:]
X = X[:-forecast]
y = np.array(df['Prediction'])
y = y[:-forecast]

X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.2)
clf = LinearRegression()
clf.fit(X_train,y_train)
confidence = clf.score(X_test,y_test)
confidence
forecast_predicted = clf.predict(X_forecast)
print(forecast_predicted)

plt.plot(X,y)

dates = pd.date_range(start="2021-05-21",end= "2021-06-19")
plt.plot(dates,forecast_predicted,color='b')
df['Adj Close'].plot(color='g')
plt.xlim(xmin = datetime.date(2020,5,1))
plt.xlim(xmax = datetime.date(2021,7,1))

我知道错误代码的最后一部分。 这是代码的最后一部分在 3 月 15 日工作时的样子。

dates = pd.date_range(start="2021-03-16",end= "2021-04-14")
plt.plot(dates,3,1))

解决方法

错误输出中有解释:您的 x 和 y 第一维不匹配。问题是您要预测 70 天(forecast=70)并尝试将其绘制到 30 天的周期内。

您可以尝试更改预测天数:

forecast=30

或者匹配 70 天的时间段,如下所示:

dates = pd.date_range(start="2021-05-21",end= "2021-07-29")