我拥有一个数据表,它的两个列产生了一个看起来像这样的图。请注意,Y轴在日志中。
Don't mind the random Kanji. That's already fixed
我认为,通过机器学习使用TF和Keras进行的非线性回归显示这种关系可能是一个好主意。代码如下:
def createModel():
model = Sequential()
model.add(Dense(50, activation='relu', input_dim=1))
model.add(Dense(25, activation='relu', input_dim=1))
model.add(Dense(1, activation='linear'))
return model
model1 = createModel()
model1.compile(SGD (lr=0.0001),loss='mse')
print(model1.summary())
Taisha_Learn=model1.fit(Heisei_Learn["竣工年月"],Heisei_Learn["平成27年まで詰めた堆砂容量_Percent"],batch_size=50, epochs=1000, validation_split=(0.08), verbose=2)
predictions = model1.predict(Heisei_Learn["竣工年月"], verbose=1)
plt.plot(Heisei_Learn["竣工年月"],predictions)
# plt.legend([ 'Predictated Y'])
plt.show()
该模型表现糟糕。损失几乎没有减少。随后,这就是预测。
Absolutely horrible prediction
我已经尝试过使用其他优化器(Adam,RMSprop),学习率和批量大小,但没有积极作用。 我在考虑是否可能由于异常而导致数据问题。我只是在相应的栏中过滤掉了NaN。
Heisei = pd.read_excel("日本ダム/平成27.xlsx")
Heisei_Learn=Heisei.dropna(subset=['平成27年まで詰めた堆砂容量_Percent'])
我确实尝试了许多更改,但通常情况下,损失看起来像这样:
必须有一种更好的方法来从数据中获得真实的非线性回归。关于它们,我必须改变吗?再次,请查看原始问题中发布的图表。拉力吓到我了--.....
有没有像样的人来帮助像我这样愚蠢的人?
答案 0 :(得分:0)
由于您处于回归设置中,因此输出层的激活应为 linear ,并且绝对不能为softmax(通常仅用于分类);将模型的最后一层更改为
model.add(Dense(1, activation='linear'))
或者只是
model.add(Dense(1))
因为默认激活(即,如果您未指定任何内容)是线性的(docs)。
已完成此操作,开始尝试将学习率LR
值设为0.001 ...
答案 1 :(得分:0)