У меня есть 30 Dataframes разных временных рядов с одинаковым размером функции (6), но разной длины временных рядов (> 500000). Каждый Dataframe имеет один идентификатор, который должен быть предсказан. Это должно быть проблемой регрессии. Даже если у меня нет временного ряда для идентификатора 5 (всего идентификаторов 1500), сеть должна вывести идентификатор рядом с реальным идентификатором.
Я хочу, чтобы нейронная сеть узнала временные ряды для одного идентификатора, а затем продолжила работу со следующим идентификатором. Чтобы делать прогнозы, я хочу ввести меньшие временные ряды, а нейронная сеть должна вывести идентификатор.
seed = 11
np.random.seed(seed)
import_new_Data = True
if import_new_Data:
csv_files = glob.glob('/home/lta-user/PycharmProjects/regression/Testdaten_2/*.csv')
list_data = []
label_list = []
sum = 0
##import the datasets and concat them to one dataset
for path in csv_files:
dta = dta.read_sets(path)
list_data.append(dta)
df = pd.concat(list_data, ignore_index=True) # concat the data to one DataFrame
labels = df.pop(df.columns[len(df.columns)-1])
labels = labels.values
df = df.values
#the data is normalized in a range from 0 to 1
scaler = MinMaxScaler(feature_range=(-1, 1))
df = scaler.fit_transform(df)
df = df.reshape(1,df.shape[0],df.shape[1])
normed_train_data, normed_test_data, train_labels, test_labels = model_selection.train_test_split(df, labels,
train_size=0.75, test_size=0.25, random_state=seed)
#----------------------------------------------------------------------------------------------------------------------
#building the model
#----------------------------------------------------------------------------------------------------------------------
def build_model():
model = keras.Sequential([
#Creating a fully connected layer
#1. Hidden-Layer: Fully connected with ReLu as activation function
layers.LSTM(12, activation='relu', input_shape = (?,?,?),return_sequences=True),
#Output-Layer: Fully connected with an linear activation function
layers.Dense(1, kernel_initializer='normal', activation='linear')
])
#Choosing the Adam-Optimizer with an learning rate of 0.001
optimizer = tf.keras.optimizers.Adam(0.001)
model.compile(loss='mean_squared_error', optimizer=optimizer, metrics=['mean_absolute_error', 'mean_squared_error'])
return model
#create network
model = build_model()
model.summary() #prints a description of the model
##----------------------------------------------------------------------------------------------------------------------