gpt4 book ai didi

Tensorflow多项式线性回归曲线拟合

转载 作者:行者123 更新时间:2023-11-30 08:37:03 27 4
gpt4 key购买 nike

我使用 Tensorflow (Keras) 创建了这个线性回归模型。但是,我没有得到好的结果,我的模型正在尝试拟合线性线周围的点。我相信围绕 n 次多项式拟合点可以给出更好的结果。我在 google 上搜索了如何使用 Tensorflow Keras 将模型更改为多项式线性回归,但找不到好的资源。关于如何改进预测有什么建议吗?

我有一个很大的数据集。首先对其进行洗牌,然后进行 80% 的训练和 20% 的测试。数据集也被标准化。

1)建筑模型:

def build_model():

model = keras.Sequential()
model.add(keras.layers.Dense(units=300, input_dim=32))

model.add(keras.layers.Activation('sigmoid'))
model.add(keras.layers.Dense(units=250))

model.add(keras.layers.Activation('tanh'))
model.add(keras.layers.Dense(units=200))

model.add(keras.layers.Activation('tanh'))
model.add(keras.layers.Dense(units=150))

model.add(keras.layers.Activation('tanh'))
model.add(keras.layers.Dense(units=100))

model.add(keras.layers.Activation('tanh'))
model.add(keras.layers.Dense(units=50))

model.add(keras.layers.Activation('linear'))
model.add(keras.layers.Dense(units=1))

#sigmoid tanh softmax relu

optimizer = tf.train.RMSPropOptimizer(0.001,
decay=0.9,
momentum=0.0,
epsilon=1e-10,
use_locking=False,
centered=False,
name='RMSProp')

#optimizer = tf.train.GradientDescentOptimizer(learning_rate=0.1)

model.compile(loss='mse',
optimizer=optimizer,
metrics=['mae'])
return model

model = build_model()
model.summary()

2)训练模型:

class PrintDot(keras.callbacks.Callback):
def on_epoch_end(self, epoch, logs):
if epoch % 100 == 0: print('')
print('.', end='')

EPOCHS = 500

# Store training stats
history = model.fit(train_data, train_labels, epochs=EPOCHS,
validation_split=0.2, verbose=1,
callbacks=[PrintDot()])

3) 绘制训练损失和验证损失 enter image description here

4) 当结果没有改善时停止 enter image description here

5) 评估结果

[loss, mae] = model.evaluate(test_data, test_labels, verbose=0)
#Testing set Mean Abs Error: 1.9020842795676374

6)预测:

test_predictions = model.predict(test_data).flatten()

enter image description here

7) 预测误差: enter image description here

最佳答案

多项式回归是一种带有一些额外输入特征的线性回归,这些特征是原始输入特征的多项式函数。IE。;设原始输入特征为:(x1,x2,x3,...)

通过对原始特征添加一些变换来生成一组多项式函数,例如:(x12, x23,x13x2,...)。人们可以根据其约束来决定要包含哪些所有函数,例如与目标值相关的直觉、计算资源和训练时间。

将这些新特征附加到原始输入特征向量中。现在,变换后的输入特征向量的大小为 len(x1,x2,x3,...) + len(x12, x23, x1 3x2,...)

此外,这组更新的输入特征(x1,x2,x3,x1 2,x23,x13x< sub>2,...) 被输入到正常的线性回归模型中。 ANN 的架构可能会再次调整以获得最佳的训练模型。

PS:我看到你的网络很大,而输入数量只有 32 - 这不是常见的架构规模。即使在这个特定的线性模型中,将隐藏层减少到一个或两个隐藏层可能有助于训练更好的模型(这是一个假设该特定数据集与其他常见回归数据集类似的建议)

关于Tensorflow多项式线性回归曲线拟合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54872466/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com