Почему я получаю: sns.lineplot(x=anomaly_df['Date'], y=scaler.inverse_transform(anomaly_df['Close/Last']))Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Почему я получаю: sns.lineplot(x=anomaly_df['Date'], y=scaler.inverse_transform(anomaly_df['Close/Last']))

Сообщение Anonymous »

Код: Выделить всё

import numpy as np
from keras.models import Sequential
from keras.layers import LSTM, Input, Dropout
from keras.layers import Dense
from keras.layers import RepeatVector
from keras.layers import TimeDistributed
import pandas as pd
from matplotlib import pyplot as plt
from sklearn.preprocessing import MinMaxScaler, StandardScaler
from keras.models import Model
import seaborn as sns

dataframe = pd.read_csv('spxMoreData.csv')
df = dataframe[['Date', 'Close/Last']]
df['Date'] = pd.to_datetime(df['Date'])

#print(df['Close/Last'].dtype)

sns.lineplot(x=df['Date'], y=df['Close/Last'])
plt.show()

print("Start date is: ", df['Date'].min())
print("End date is: ", df['Date'].max())

#Change train data from mid 2022....seems to be a jump early 2022
train, test = df.loc[df['Date']  '2022-01-03']

#Scaler
scaler = StandardScaler()
scaler = scaler.fit(train[['Close/Last']])

train['Close/Last'] = scaler.transform(train[['Close/Last']])
test['Close/Last'] = scaler.transform(test[['Close/Last']])

# Number of time steps to look back
# Larger sequences (look further back) may improve forecasting
seq_size = 30

def to_sequences(x, y, seq_size=1):
x_values = []
y_values = []

for i in range(len(x)-seq_size):
#print(i)
x_values.append(x.iloc[i:(i+seq_size)].values)
y_values.append(y.iloc[i+seq_size])

return np.array(x_values), np.array(y_values)

trainX, trainY = to_sequences(train[['Close/Last']], train['Close/Last'], seq_size)
testX, testY = to_sequences(test[['Close/Last']], test['Close/Last'], seq_size)

# Try a model
model = Sequential()
model.add(LSTM(128, input_shape =(trainX.shape[1], trainX.shape[2])))
model.add(Dropout(rate=0.2))

model.add(RepeatVector(trainX.shape[1]))

model.add(LSTM(128, return_sequences=True))
model.add(Dropout(rate=0.2))
model.add(TimeDistributed(Dense(trainX.shape[2])))
model.compile(optimizer='adam', loss='mae')
model.summary()

#fit model
history = model.fit(trainX, trainY, epochs=10, batch_size=32, validation_split=0.1, verbose=1)

plt.plot(history.history['loss'], label='Training loss')
plt.plot(history.history['val_loss'], label='Validation loss')
plt.legend()
plt.show()

# mean absolute error
trainPredict = model.predict(trainX)
trainMAE = np.mean(np.abs(trainPredict - trainX), axis=1)
plt.hist(trainMAE, bins=30)
max_trainMAE = 0.3 # or define 90% value of max as threshold.
plt.show()

testPredict = model.predict(testX)
testMAE = np.mean(np.abs(testPredict - testX), axis=1)
plt.hist(testMAE, bins=30)

# lets capture the anomaly
#Capture all details in a Dataframe for easy plotting
anomaly_df = pd.DataFrame(test[seq_size:])
anomaly_df['testMAE'] = testMAE
anomaly_df['max_trainMAE'] = max_trainMAE
anomaly_df['anomaly'] = anomaly_df['testMAE'] > anomaly_df['max_trainMAE']
anomaly_df['Close/Last'] = test[seq_size:]['Close/Last']

#plot testMAE vs max_trainMAE
sns.lineplot(x=anomaly_df['Date'], y=anomaly_df['testMAE'])
sns.lineplot(x=anomaly_df['Date'], y=anomaly_df['max_trainMAE'])
plt.show()

anomalies = anomaly_df.loc[anomaly_df['anomaly']== True]

#plot anomalies
sns.lineplot(x=anomaly_df['Date'],y=scaler.inverse_transform(anomaly_df['Close/Last']))
sns.scatterplot(x=anomalies['Date'],y=scaler.inverse_transform(anomalies['Close/Last']), color='r')
когда я дохожу до последней части и запускаю код, он выдает ошибку. Я использую Python Spyder.

Код: Выделить всё

#plot anomalies
sns.lineplot(x=anomaly_df['Date'], y=scaler.inverse_transform(anomaly_df['Close/Last']))
sns.scatterplot(x=anomalies['Date'],y=scaler.inverse_transform(anomalies['Close/Last']), color='r')
когда я запускаю последнюю часть кода, я получаю следующую ошибку:

ValueError: Ожидается двумерное значение контейнер, но вместо этого получил . Вместо этого передайте DataFrame, содержащий одну строку (т. е. один образец) или один столбец (т. е. один объект).

Как это исправить?

Как это исправить?

Как это исправить?

Как это исправить?

п>

Подробнее здесь: https://stackoverflow.com/questions/792 ... er-inverse
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Селектор :last vs :last-child
    Anonymous » » в форуме Jquery
    0 Ответы
    27 Просмотры
    Последнее сообщение Anonymous
  • Каково использование Inverse() в Nhibernate
    Anonymous » » в форуме C#
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous
  • Каково использование Inverse() в Nhibernate
    Anonymous » » в форуме C#
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • Динамический Seaborn LinePlot с использованием виджета PYQT5
    Anonymous » » в форуме Python
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous
  • Не удалось найти Transform-api.jar (com.android.tools.build:transform-api:2.0.0-deprecated-use-gradle-api)
    Anonymous » » в форуме Android
    0 Ответы
    33 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»