はそれがクローズアップまたは翌日ダウン場合、私が何をしたか(= 1アップ、ダウン= 0)Kerasモデルは、試験精度の下に1.0
を予測するためのコードは、データフレームを作成し、ちょうど を使用して予測することだったです提供しますPriceChange(クローズ今日 - クローズ昨日は)(閉じる次の日 - 今日閉じる)上下に次の日の価格変動を予測する
だからデータフレームは、この
df['PriceChange'] = (df['Close'] > df['Close'].shift(1)).astype(int)
df['Closeupnextday'] = (df['Close'].shift(-1) > df['Close']).astype(int)
PriceChange Closeupnextday
0 0 1
1 1 1
2 1 1
3 1 1
4 1 0
5 0 0
6 0 0
7 0 1
のように見えるそれは常に私の精度を提供します1.0 00 公正であることは50 +%の精度でなければなりません。 私は以下のコードで何かが間違っていると信じていますが、私はそれを見つけることができません。
私はエポック500分の20の後に、それは常に私に1.000 accurancy
どれ助言PLSを与えることを追加する必要がありますか?
def load_data(stock, seq_len):
amount_of_features = len(stock.columns)
data = stock.as_matrix() #pd.DataFrame(stock)
sequence_length = seq_len + 1
result = []
for index in range(len(data) - sequence_length):
result.append(data[index: index + sequence_length])
result = np.array(result)
row = round(0.9 * result.shape[0])
train = result[:int(row), :]
x_train = train[:, :-1]
y_train = train[:, -1][:,-1]
x_test = result[int(row):, :-1]
y_test = result[int(row):, -1][:,-1]
x_train = np.reshape(x_train, (x_train.shape[0], x_train.shape[1], amount_of_features))
x_test = np.reshape(x_test, (x_test.shape[0], x_test.shape[1], amount_of_features))
return [x_train, y_train, x_test, y_test]
def build_model(layers):
model = Sequential()
model.add(LSTM(
input_dim=layers[0],
output_dim=layers[1],
return_sequences=True))
model.add(Dropout(0.0))
model.add(LSTM(
layers[2],
return_sequences=False))
model.add(Dropout(0.0))
model.add(Dense(
output_dim=layers[2]))
model.add(Activation("linear"))
start = time.time()
model.compile(loss="mse", optimizer="rmsprop",metrics=['accuracy'])
print("Compilation Time : ", time.time() - start)
return model
def build_model2(layers):
d = 0.2
model = Sequential()
model.add(LSTM(128, input_shape=(layers[1], layers[0]), return_sequences=True))
model.add(Dropout(d))
model.add(LSTM(64, input_shape=(layers[1], layers[0]), return_sequences=False))
model.add(Dropout(d))
model.add(Dense(16, activation="relu", kernel_initializer="uniform"))
model.add(Dense(1, activation="relu", kernel_initializer="uniform"))
model.compile(loss='mse',optimizer='adam',metrics=['accuracy'])
return model
window = 5
X_train, y_train, X_test, y_test = load_data(df[::-1], window)
print("X_train", X_train.shape)
print("y_train", y_train.shape)
print("X_test", X_test.shape)
print("y_test", y_test.shape)
# model = build_model([3,lag,1])
model = build_model2([len(df.columns),window,1]) #11 = Dataframe axis 1
model.fit(
X_train,
y_train,
batch_size=512,
epochs=500,
validation_split=0.1,
verbose=1)
trainScore = model.evaluate(X_train, y_train, verbose=0)
print('Train Score: %.2f MSE (%.2f RMSE)' % (trainScore[0], math.sqrt(trainScore[0])))
testScore = model.evaluate(X_test, y_test, verbose=0)
print('Test Score: %.2f MSE (%.2f RMSE)' % (testScore[0], math.sqrt(testScore[0])))
# print(X_test[-1])
diff=[]
ratio=[]
p = model.predict(X_test)
for u in range(len(y_test)):
pr = p[u][0]
ratio.append((y_test[u]/pr)-1)
diff.append(abs(y_test[u]- pr))
#print(u, y_test[u], pr, (y_test[u]/pr)-1, abs(y_test[u]- pr))
print (p)
print (y_test)
天気をチェックして、偶然、目標値をトレーニングデータとして含めました。あなたがそのような間違いをしていない限り、これは私が推測することは不可能です。 –
私のデータフレームには何の問題もありません...コードはありますが、それは理解できません –
好奇心の喪失から、MSEを最小限に抑えて、最終層をReLUに分類するのはなぜですか? – jonnybazookatone