#dataframe #tensorflow #keras #deep-learning
Вопрос:
При попытке выполнить регрессию с помощью глубокого обучения на непоследовательных данных, считываемых пандами из csv, точность всегда равна 0 или с ошибками формы, которые невозможно понять.
мои данные-это обычный csv, с 14 функциями (float64) и 1 целевой меткой (также float64).
Вот код:
traindf = pd.read_csv(...)
... clean blabla ...
train_dataset = traindf.sample(frac=0.8, random_state=0)
test_dataset = traindf.drop(train_dataset.index)
train_features = train_dataset.copy()
test_features = test_dataset.copy()
train_labels = train_features.pop('power')
test_labels = test_features.pop('power')
train_features.shape
#(27967, 14)
test_labels.shape
#(6992,)
train_features = tf.convert_to_tensor(train_features)
test_features = tf.convert_to_tensor(test_features)
train_labels = tf.convert_to_tensor(train_labels)
test_labels = tf.convert_to_tensor(test_labels)
и модель такая:
x_in = L.Input((14))
flat_flatten = L.Flatten()(x_in)
flat_hidden = L.Dense(units=128, activation="sigmoid")(flat_flatten)
flat_out = L.Dense(units=1, activation="softmax")(flat_hidden)
model = K.Model(inputs=x_in , outputs=flat_out)
model.compile(loss="sparse_categorical_crossentropy", optimizer="adam")
model.summary()
model.fit(x=train_features, y=train_labels, validation_data=(test_features,
test_labels), epochs=2, callbacks=[K.callbacks.TensorBoard()])
Я также попробовал это:
model = keras.Sequential([
layers.Dense(64, activation='relu', input_shape=[len(train_features.keys())]),
layers.Dense(64, activation='relu'),
layers.Dense(1)])
optimizer = keras.optimizers.RMSprop(0.001)
model.compile(loss='binary_crossentropy', optimizer=optimizer, metrics=['mae'])
model.fit(train_features, train_labels, epochs=200, validation_split=0.3, verbose=1)
и затем, либо я запустил его с точностью всегда 0, либо я получаю ошибки с формой. но как именно я должен изменить обычный массив numpy?