如何解决Keras回归损失太大
everyoe,我是Keras的新手,深度学习之类的东西,我在这里遇到了一个问题,当我拟合模型时,损失太大了,而且太大了。损失的结果可能至少不超过10万,但超过30万。我不知道问题出在哪里,这是我的模型和代码
import pandas as pd
import numpy as np
from matplotlib import pyplot as plt
import seaborn as sns
from keras.models import Sequential
from keras.layers import Dense,Dropout
from sklearn.model_selection import train_test_split,KFold,cross_val_score
from keras.wrappers.scikit_learn import KerasRegressor
from sklearn.preprocessing import MinMaxScaler
from sklearn.pipeline import Pipeline
from sklearn.metrics import mean_squared_error,mean_absolute_error,explained_variance_score
data = pd.read_excel('dataset_real.xlsx')
data_real = data.drop(["no","bulan","tahun","kota","kecamatan/wilayah","korban_hilang"],axis=1)
X = data_real.drop(["taksiran_kerugian"],axis=1)
y = data_real["taksiran_kerugian"]
minmax = MinMaxScaler()
X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.30,random_state=42)
X_train_scaled = minmax.fit_transform(X_train)
X_test_scaled = minmax.transform(X_test)
def model_kebakaran():
model = Sequential()
model.add(Dense(10,input_dim=10,activation="relu"))
model.add(Dense(1))
model.compile(loss="mean_absolute_error",optimizer="adam")
return model
seed = 5
np.random.seed(5)
estimator = KerasRegressor(build_fn=model_kebakaran,nb_epoch=500,batch_size=5,verbose=0)
kfold = KFold(n_splits=10,random_state=seed)
result = cross_val_score(estimator,X_train_scaled,y_train.values,cv=kfold,n_jobs=1)
print("Results: %.2f (%.2f) MSE" % (result.mean(),result.std())) #Results: -308763363.20 (114215884.15) MSE
当我尝试预测一个值时,它应该是
y_test.iloc[50] #350000000
但这是预测
test = X_test.iloc[10].values
test = test.reshape(-1,10)
prediction = estimator.predict(X_test)
prediction[50] #7.092292
解决方法
当您使用X_test
数据进行预测时,应该改用X_test_scaled
数据,因为模型是在缩放后的数据上训练的。
如果将X_test样本作为输入提供给predict
,则要求模型在以前没有的输入范围内进行预测。
所以尝试:
test = X_test_scaled.iloc[50].values
test = test.reshape(-1,10)
prediction = estimator.predict(test)
prediction[50]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。