2017-09-05 3 views
0

Wenn ich meinen Code unter Verwendung print(xdata[0:1, 0:1, :]) starte, bekam ich die erste Zeile des Arrays, aber wenn ich mit print(state) starte, bekam ich eine Reihe von Array, die in xdata enthalten, aber ich weiß nicht, warum ich das bekam.Warum erhalte ich unterschiedliche Ausgaben, wenn ich denselben Code aber anderen Namen verwende?

def load_data(test=False): 
    #prices = pd.read_pickle('data/OILWTI_1day.pkl') 
    #prices = pd.read_pickle('data/EURUSD_1day.pkl') 
    #prices.rename(columns={'Value': 'close'}, inplace=True) 
    prices = pd.read_pickle('D:\data/XBTEUR_1day.pkl') 
    prices.rename(columns={'Open': 'open', 'High': 'high', 'Low': 'low', 'Close': 'close', 'Volume (BTC)': 'volume'}, inplace=True) 

    x_train = prices.iloc[-2000:-300,] 
    x_test= prices.iloc[-2000:,] 
    if test: 
     return x_test 
    else: 
     return x_train 

def init_state(indata, test=False): 
    close = indata['close'].values 
    diff = np.diff(close) 
    diff = np.insert(diff, 0, 0) 
    sma15 = SMA(indata, timeperiod=15) 
    sma60 = SMA(indata, timeperiod=60) 
    rsi = RSI(indata, timeperiod=14) 
    atr = ATR(indata, timeperiod=14) 

    #--- Preprocess data 
    xdata = np.column_stack((close, diff, sma15, close-sma15, sma15-sma60, rsi, atr)) 

    xdata = np.nan_to_num(xdata) 
    if test == False: 
     scaler = preprocessing.StandardScaler() 
     xdata = np.expand_dims(scaler.fit_transform(xdata), axis=1) 
     joblib.dump(scaler, 'D:\data/scaler.pkl') 
    elif test == True: 
     scaler = joblib.load('D:\data/scaler.pkl') 
     xdata = np.expand_dims(scaler.fit_transform(xdata), axis=1) 
    state = xdata[0:1, 0:1, :] 

    return state, xdata, close 

indata = load_data(test=True) 
A = init_state(indata, test=False) 
print(xdata[0:1, 0:1, :]) 

Antwort

1

Sie speichern Ihre Rückgabewerte nicht in angemessener Weise. Sie speichern alle drei Werte in A und dann auf xdata. Es ist unklar, warum letzteres sogar auf globaler Ebene definiert ist, und wenn es so ist, ist es nur ein Rest von anderswo. Verwenden Sie state, xdata, close = init_state(...) anstelle von A = ..., und alles sollte wie erwartet funktionieren.

+0

Vielen Dank, Sie sparen meine Zeit. – Papadoojha

Verwandte Themen