python - Tensorflow keras model unable to predict -


i have problem tensorflow keras models.

my aim predicting usd/try price in next 5 day, if raises "will_raise_5_s" needs 1 , if won't raise "will_raise_5_s" value 0.

so, have 14 dimensional array , 0 or 1 predicted value.

so i'm creating model model doesn't learn. loss , val_acc never changes.

i see out put each epoch

loss: 7.5000 - acc: 0.5347 - val_loss: 6.5712 - val_acc: 0.5923 

here data model : https://api.myjson.com/bins/12qaq1

here code :

import urllib import json import pandas pd import stockstats sdf import numpy np  def download_data():      open('data.json', 'r') content_file:         content = content_file.read()      return content  def reformat_data_for_stockstats(data):      #boş verileri drop ediyoruz.     data = data.drop('aort',axis=1).drop('hacimtl',axis=1).drop('sembolid',axis=1)     data = data.rename(columns={         'acilis':'open',         'dusuk':'low',         'hacimlot':'volume',         'kapanis':'close',         'yuksek':'high',         'tarih':'date'     })      return data   def apply_stock_to_data(data, stock):     data['rsi_9'] = stock['rsi_9']     data['rsi_14'] = stock['rsi_14']     data['rsi_28'] = stock['rsi_28']     data['close_-2_s'] = stock['close_-2_s']     data['close_5_s'] = stock['close_5_s']     data['wr_10'] = stock['wr_10']     data['boll'] = stock['boll']     data['boll_ub'] = stock['boll_ub']     data['boll_lb'] = stock['boll_lb']      return data  def apply_classification_data(data):     #data['real_date'] = data.apply(lambda row: datetime.datetime.strptime(row['date']).date(), axis=1)      data['yesterday_raised'] = data.apply(lambda row: 1 if row['close_-1_s'] > row['close_-2_s'] else 0,                                           axis=1)     data['today_raised'] = data.apply(lambda row: 1 if row['close'] > row['open'] else 0, axis=1)     data['will_raise_5_s'] = data.apply(lambda row: 1 if row['close_5_s'] > row['close'] else 0, axis=1)      data['boll_diff'] = data.apply(lambda row: (row['close'] - row['boll']) if (np.isnan(row['boll'])==false) else 0,axis=1)     data['boll_ub_diff'] = data.apply(lambda row: (row['close'] - row['boll_ub']) if (np.isnan(row['boll_ub'])==false) else 0,axis=1)     data['boll_lb_diff'] = data.apply(lambda row: (row['close'] - row['boll_lb']) if (np.isnan(row['boll_lb'])==false) else 0,axis=1)      data['open_diff'] = data.apply(lambda row: (row['close'] - row['open']) if (np.isnan(row['open'])==false) else 0,axis=1)     data['low_diff'] = data.apply(lambda row: (row['close'] - row['low']) if (np.isnan(row['low'])==false) else 0,axis=1)     data['high_diff'] = data.apply(lambda row: (row['close'] - row['high']) if (np.isnan(row['high'])==false) else 0,axis=1)       data['close_20_sma_diff'] = data.apply(lambda row: (row['close'] - row['close_20_sma']) if (np.isnan(row['close_20_sma'])==false) else 0,axis=1)        return data   def clear_non_required_fields(data):     return data.\         drop('open',axis=1).\         drop('low',axis=1).\         drop('high',axis=1).\         drop('close',axis=1).\         drop('close_-1_s',axis=1).\         drop('close_-2_s',axis=1).\         drop('close_5_s',axis=1).\         drop('close_20_sma',axis=1).\         drop('close_20_mstd',axis=1).\         drop('rs_9',axis=1).\         drop('rs_14',axis=1).\         drop('rs_28',axis=1).\         drop('boll',axis=1).\         drop('boll_ub',axis=1).\         drop('boll_lb',axis=1).\         drop('volume',axis=1)  def clear_not_valid_data(data):     data = data.shift(-2)     data = data[:-7]      return data  data = json.loads(download_data()) data = pd.dataframe.from_dict(data) data = reformat_data_for_stockstats(data) stock = sdf.stockdataframe.retype(data)  data = apply_stock_to_data(data ,stock) data = apply_classification_data(data) data = clear_non_required_fields(data) data = clear_not_valid_data(data)   girisx = np.array(data.drop('will_raise_5_s',axis=1)) cikisx = np.array(data['will_raise_5_s'].values.reshape(-1,1))  giris = girisx[:,0:13] cikis = cikisx  import keras keras.layers import dense, activation, dropout keras.models import sequential keras.utils.np_utils import to_categorical   model = sequential() model.add(dense(units=2048,input_dim=13)) model.add(activation('relu')) model.add(dropout(0.5))   model.add(dense(units=2048)) model.add(activation('relu')) model.add(dropout(0.5))  model.add(dense(units=2)) model.add(activation('softmax'))  //this line garbage optimizer = keras.optimizers.sgd(lr=1)  model.compile(optimizer='adam',loss='sparse_categorical_crossentropy', metrics=['accuracy']) model.fit(giris, cikis, epochs=50, batch_size=32, validation_split=0.20) 

please take learning_rate: lr=1 doesn't looks normal imho. i'm not sure case, in experience: when model stops learning, means lr high. try 0.01 - 1e-5. hope, helps.

you can use keras callbacks dealing learning rate, when model stops learning (see docs).


Comments

Popular posts from this blog

PHP and MySQL WP -

android - InAppBilling registering BroadcastReceiver in AndroidManifest -

go - golang pprof for c library code -