2017-11-20 5 views
-1

Ich bin neu in maschinellem Lernen und ich versuche, eine einfache RNN für ein ganze Zahl Sequenzmodell zu entwickeln (Integer Sequence Learning - Kaggle Competition)Erste Fehler „Valueerror: konnte nicht verdeckte Zeichenfolge zu schweben“ in Integer-Sequenz Lernen

Mein Datensatz wird genommen aus dem Kaggle Wettbewerb und folgende ist mein Code:

import numpy 
import matplotlib.pyplot as plt 
import pandas as pd 
import math 
from keras.models import Sequential 
from keras.layers import Dense 
from keras.layers import SimpleRNN 
from sklearn.preprocessing import MinMaxScaler 
from sklearn.metrics import mean_squared_error 
from keras.preprocessing.sequence import pad_sequences 

# convert an array of values into a dataset matrix 
def create_dataset(dataset, window_size=1): 
    dataX, dataY = [], [] 
    for i in range(len(dataset)-window_size-1): 
     a = dataset[i:(i+window_size), 0] 
     dataX.append(a) 
     dataY.append(dataset[i + window_size, 0]) 
    return numpy.array(dataX), numpy.array(dataY) 

# fix random seed for reproducibility 
numpy.random.seed(7) 

# loading data 
dataframe = pd.read_csv('G:/Python/integer_sequencing/train.csv', usecols=[1], engine='python', skipfooter=3) 

dataset = dataframe.values 
#dataset = dataset.astype('float32') 

train_size = int(len(dataset) * 0.67) #67 per cent used for training 
test_size = len(dataset) - train_size # remaining used for testing 
train, test = dataset[0:train_size], dataset[train_size:len(dataset)] 
#print(train_data.head(n=10)) 

# normalize the datasets 
scaler_train = MinMaxScaler(feature_range=(0, 1)) 
scaler_test = MinMaxScaler(feature_range=(0, 1)) 
train = scaler_train.fit_transform(train) 
test = scaler_test.fit_transform(test) 

# reshape input to be [samples, time steps, features] 
trainX = numpy.reshape(trainX, (trainX.shape[0], 1, trainX.shape[1])) 
testX = numpy.reshape(testX, (testX.shape[0], 1, testX.shape[1])) 

print(trainX.shape) 
print(trainY.shape) 

ich einen Fehler wie folgt: enter image description here

wie kann ich das Problem beheben? Bitte helfen ...

PS - Ich bin mit Time series prediction als Beispiel

Antwort

0

Das Problem ist, dass Sie Ihr Netzwerk eine string Sequenz sind Fütterung. Überprüfen Sie die dtype Ihrer Eingabedaten und seien Sie absolut sicher, dass es ein numply Array mit float Zahlen darin ist.

+0

Der Datensatz, den ich verwende, ist der, der im Kaggle-Wettbewerb bereitgestellt wird. Das Problem besteht darin, die nächste Zahl in einer ganzzahligen Sequenz vorherzusagen. Die Trainingsdaten bestehen aus allen möglichen Integer-Sequenzen. –

+0

Ich verstehe, aber Ihre Eingabedaten sollten nicht "string" Typ sein, sonst wird dieser Fehler bestehen bleiben. Versuchen Sie, die Sequenz aufzuteilen und jede String-Nummer in einen 'float' zu konvertieren. – Dascienz

+0

Danke! Spaltung funktioniert. –

Verwandte Themen