python - Python 属性错误:“int”对象没有属性“reshape”
问题描述
我正在尝试使用 python 预测股票价格,同时尝试将数据集重塑为“fit”函数的 2D num 数组,并以此为参考:sklearn Logistic Regression "ValueError: Found array with dim 3. Estimator expected <= 2 。”
next_day_open_values, nx, ny = next_day_open_values.shape
next_day_open_values = next_day_open_values.reshape((next_day_open_values,nx*ny))
y_normaliser = preprocessing.MinMaxScaler()
y_normaliser.fit((np.expand_dims( next_day_open_values, -1 )))
我遇到了这个错误:
<ipython-input-42-6ea43c55dc18> in csv_to_dataset(csv_path)
20
21 next_day_open_values, nx, ny = next_day_open_values.shape
---> 22 next_day_open_values = next_day_open_values.reshape((next_day_open_values,nx*ny))
23 y_normaliser = preprocessing.MinMaxScaler()
24 y_normaliser.fit((np.expand_dims( next_day_open_values, -1 )))
AttributeError: 'int' object has no attribute 'reshape'
出了什么问题?我该如何解决?详细的答案表示赞赏。
到目前为止的代码如下(我使用的是 Jupyter notebook):
import keras
from keras.models import Model
from keras.layers import Dense, Dropout, LSTM, Input, Activation
from keras import optimizers
import numpy as np
np.random.seed(4)
import tensorflow
tensorflow.random.set_seed(4)
import pandas as pd
from sklearn import preprocessing
import numpy as np
history_points = 50
def csv_to_dataset(csv_path):
data = pd.read_csv(csv_path)
data = data.drop('Date', axis=1)
data = data.drop(0, axis=0)
data_normaliser = preprocessing.MinMaxScaler()
data_normalised = data_normaliser.fit_transform(data)
# using the last {history_points} open high low close volume data points, predict the next open value
ohlcv_histories_normalised = np.array([data_normalised[i : i + history_points].copy() for i in range(len(data_normalised) - history_points)])
next_day_open_values_normalised = np.array([data_normalised[:,0][i + history_points].copy() for i in range(len(data_normalised) - history_points)])
next_day_open_values_normalised = np.expand_dims(next_day_open_values_normalised, -1)
next_day_open_values = np.array([data.iloc[:,0][i + history_points].copy() for i in range(len(data) - history_points)])
next_day_open_values = np.expand_dims(next_day_open_values_normalised, axis=-1)
next_day_open_values, nx, ny = next_day_open_values.shape
next_day_open_values = next_day_open_values.reshape((next_day_open_values,nx*ny))
y_normaliser = preprocessing.MinMaxScaler()
y_normaliser.fit((np.expand_dims( next_day_open_values, -1 )))
assert ohlcv_histories_normalised.shape[0] == next_day_open_values_normalised.shape[0]
return ohlcv_histories_normalised, next_day_open_values_normalised, next_day_open_values, y_normaliser
#dataset
hlcv_histories, next_day_open_values, unscaled_y, y_normaliser = csv_to_dataset('AMZN1.csv')
test_split = 0.9 # the percent of data to be used for testing
n = int(ohlcv_histories.shape[0] * test_split)
# splitting the dataset up into train and test sets
ohlcv_train = ohlcv_histories[:n]
y_train = next_day_open_values[:n]
ohlcv_test = ohlcv_histories[n:]
y_test = next_day_open_values[n:]
unscaled_y_test = unscaled_y[n:]
随意更正/编辑这个。
谢谢
解决方案
您提供了大量的代码行,但这实际上归结为一个问题:您正在从next_day_open_values, nx, ny = next_day_open_values.shape
. Numpy 的 reshape 需要一个数组作为输入,而不是整数或单个值。
参数:numpy.reshape(a, newshape, order='C')
a : array_like - 要重塑的数组。
我怀疑你是否试图获得一个重复nx*ny
形状的单个整数的向量。此外,如果您将输入转换为数组,并执行相同的操作,您会遇到,ValueError
因为您无法将大小为 1 的数组重新整形为特定形状。
我相信这可能有效,但我不知道是什么next_day_open_values
:
next_day_open_values_s, nx, ny = next_day_open_values.shape
next_day_open_values = next_day_open_values.reshape(next_day_open_values_s,nx*ny)
推荐阅读
- javascript - Angular Web Components - @Input 没有收到值
- javascript - Javascript - 日期格式
- html - 如何在 Bootstrap 4 中圆化卡片(正文和图像)的角?
- networking - 是否可以在 Python 中使用 Scapy 解析 QUIC 流量。如果是这样,那怎么办?
- typo3 - 如果我将 config.cron.yml 与 ddev 一起使用,来自 config.yaml 的钩子将被忽略
- typescript - 如何使用具有函数类型和其他类型的接口参数调用方法
- php - Bootstrap / SQL:将多个选定的数据更新到 SQL 数据库
- postgresql - postgresql 11 选择查询时间去增加
- css - 无覆盖的 React 组件渲染
- reactjs - ReferenceError:刷新nextjs页面时未定义文档