【发布时间】:2021-07-15 17:36:37
【问题描述】:
代码如下:
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import pandas_datareader as web
import datetime as dt
from sklearn.preprocessing import MinMaxScaler
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Dropout, LSTM
# Load data
company = 'FB'
start = dt.datetime(2012,1,1)
end = dt.datetime(2020,1,1)
data = web.DataReader(company, 'yahoo', start, end)
#Prepare Data
scaler = MinMaxScaler(feature_range=(0,1))
scaled_date = scaler.fit_transform(data['Close'].values.reshape(-1,1))
prediction_days = 60
x_train = []
y_train = []
for x in range(prediction_days, len(scaled_date)):
x_train.append(scaled_date[x-prediction_days:x, 0])
y_train.append(scaled_date[x, 0])
x_train, y_train = np.array(x_train), np.array(y_train)
x_train = np.reshape(x_train, (x_train.shape[0], x_train[1], 1)) #the error's here
我收到以下错误:
Traceback(最近一次调用最后一次):文件 “/Users/evgenypavlov/Documents/ml_tutorial_1/main.py”,第 34 行,在 x_train = np.reshape(x_train, (x_train.shape[0], x_train[1], 1)) 文件“array_function internals>”,第 5 行,在 reshape 文件中 "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/numpy/core/fromnumeric.py", 第 299 行,重塑 return _wrapfunc(a, 'reshape', newshape, order=order) 文件 "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/numpy/core/fromnumeric.py", 第 67 行,在 _wrapfunc 中 返回_wrapit(obj,方法,*args,**kwds)文件“/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/numpy/core/fromnumeric.py”, 第 44 行,在 _wrapit 中 result = getattr(asarray(obj), method)(*args, **kwds) TypeError: only integer scalar arrays can be convert to a scalar index
据我所知,我已经将其转换为 np.array,那么可能导致此问题的原因以及如何解决呢?
【问题讨论】:
-
您的意思是最后一行的
x_train.shape[1]而不是x_train[1]? -
你在最后一行漏掉了一个“形状”:np.reshape(x_train, (x_train.shape[0], x_train.shape[1], 1))
-
看起来像,干杯!
标签: python pandas numpy machine-learning scikit-learn