【发布时间】:2019-11-21 07:24:59
【问题描述】:
我是机器学习的新手。我正在尝试从数据集中预测两个数字列。我必须预测的列是 Amount 和 number of days 。 金额、天数是特征,所有其他列都是标签。
ID Category Company Amount No_of_days
x1 c1 A 338.07 5
x2 c2 B 46.21 35
x4 c1 C 1480 35
x1 c3 C 2018 48
x2 others A 4344 -10
我尝试用 keras 的神经网络拟合数据集 我所做的预处理步骤是一种热编码和最小最大标量。
我尝试添加更多层、更多神经元、改变 epoch 数和激活层到 sigmoid 和leaky relu。
代码:
model = Sequential()
# The Input Layer :
model.add(Dense(64, kernel_initializer='normal',input_dim = X_train.shape[1], activation='relu'))
# The Hidden Layers :
model.add(Dense(256, kernel_initializer='normal',activation='relu'))
model.add(Dense(256, kernel_initializer='normal',activation='relu'))
model.add(Dense(256, kernel_initializer='normal',activation='relu'))
model.add(Dense(64, kernel_initializer='normal',activation='relu'))
# The Output Layer :
model.add(Dense(2, kernel_initializer='normal',activation='linear'))
# Compile the network :
model.compile(loss='mean_absolute_error', optimizer='adam', metrics=['mean_absolute_error'])
checkpoint_name = 'Weights-{epoch:03d}--{val_loss:.5f}.hdf5'
checkpoint = ModelCheckpoint(checkpoint_name, monitor='val_loss', verbose = 1, save_best_only = True, mode ='auto')
callbacks_list = [checkpoint]
model.fit(X_train, y_train, epochs=50, batch_size=32,validation_split = 0.2, callbacks=callbacks_list)
Keras 函数式 API 代码
from keras.models import Model
from keras.layers import Input
X_train, y_train = np.array(X_train), np.array(y_train)
visible = Input(shape=(X_train.shape[1],))
X = Dense(256, kernel_initializer='normal',activation='relu')(visible)
X = Dense(256, kernel_initializer='normal',activation='relu')(X)
X = Dense(256, kernel_initializer='normal',activation='relu')(X)
out1 = Dense(1, kernel_initializer='normal',activation='linear')(X)
out2 = Dense(1, kernel_initializer='normal',activation='linear')(X)
model = Model(inputs=visible, outputs=[out1, out2])
model.compile(loss='mean_absolute_error', optimizer='adam', metrics=['mean_absolute_error'])
model.fit(X_train,[y_train[:,0], y_train[:,1]] ,epochs=50, batch_size=32)
预测的两列与实际测试列不匹配,得到的 RMSE 分数是 40860。所以我不知道如何继续进行以获得更准确的预测。请帮助我哪里出错了?我必须在哪里进行更改以预测多列?
【问题讨论】:
-
您能否提供更多详细信息,您获得的训练准确度和验证准确度是多少?
-
损失:0.0078 - mean_absolute_error:0.0078 - val_loss:0.0094 - val_mean_absolute_error:0.0094 @RAMSHANKERG
标签: python machine-learning keras regression prediction