python - KerasRegression Loss 太大
问题描述
大家,我是 Keras 的新手,深度学习和其他东西,我在这里遇到了一个问题,当我拟合模型时,损失太大了。丢失的结果可能至少不超过 100K,但超过 300.000K。我不知道问题出在哪里,这是我的模型和代码
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]
推荐阅读
- iphone - 基于地理位置的 iOS 推送通知。(例如城市飞艇)
- laravel - Laravel 5.0 渲染非公开 pdf?
- c++ - 在不重新创建整个平面缓冲区的情况下使用(非对象)C++ API 时改变表数组
- objective-c - 如何在 Objective-C 中模拟双重调度
- c# - 无法使用 linq 表达式,无法在 LINQ to Entities 查询中构造实体或复杂类型“”
- haskell - 尝试用矩阵编写 Levenshtein 度量的实现
- python-3.x - 如何在python中命名单个子图饼图?
- javascript - 更改反应组件中的优先级
- java - 使用拆分并从文件中的一行读取整数和字符串,但它不打印任何内容
- excel - Excel读取基于具有值范围的单元格并从不同的单元格中选择值