Python 如何提高降低损失?

Python 如何提高降低损失?,python,keras,neural-network,regression,loss,Python,Keras,Neural Network,Regression,Loss,我试图用回归模型预测一些连续值,这些值取决于性别、年收入和年龄。我的损失太大了。我试着用谷歌搜索自己,但我所发现的只是改进了超参数(单位数量、隐藏层数量、批量大小、学习速度、年代)。作为一种回归,激活函数是“线性”的。我能做些什么来改进我的模型 以下是我的尝试: #IMPORTING DATASETS import numpy as np import pandas as pd import tensorflow as tf data1 = pd.read_csv(r"C:\Use

我试图用回归模型预测一些连续值,这些值取决于性别、年收入和年龄。我的损失太大了。我试着用谷歌搜索自己,但我所发现的只是改进了超参数(单位数量、隐藏层数量、批量大小、学习速度、年代)。作为一种回归,激活函数是“线性”的。我能做些什么来改进我的模型

以下是我的尝试:

#IMPORTING DATASETS
import numpy as np 
import pandas as pd
import tensorflow as tf

data1 = pd.read_csv(r"C:\Users\Cucu\Desktop\Mall_Customers.csv") 
x = data1.iloc [: , 1:-1].values #SEPARATE INDEPENDENT VARIABLES
y = data1.iloc [: , -1].values #SEPARATE DEPENDENT VARIABLES


#ENCODING CATEGORICAL DATA
from sklearn.preprocessing import LabelEncoder
le = LabelEncoder()
x[: , 0] = le.fit_transform( x[: , 0] )
x = np.asarray(x).astype('float32')
 

#LET'S SPLIT INTO TRAIN SET & TEST SET
from sklearn.model_selection import train_test_split
x_train , x_test , y_train , y_test = train_test_split(x , y , test_size = 0.2 , random_state = 1 )


#APPLYING FEATURE SCALING
from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
x_train[: , 2:] = sc.fit_transform(x_train[: , 2:])
x_test[: , 2:] = sc.transform(x_test[: , 2:])

#BULDING THE ANN
#INITIALZING THE ANN
ann = tf.keras.models.Sequential()

#ADDING THE INPUT LAYER &THE FIRST HIDDEN LAYER
ann.add(tf.keras.layers.Dense(units = 30 , activation = 'relu'))
#--units(the number of neurons--hyper-parameter--must be optimized)

#ADDING THE HIDDEN LAYERS
ann.add(tf.keras.layers.Dense(units = 30 , activation = 'relu'))
ann.add(tf.keras.layers.Dense(units = 30 , activation = 'relu'))
ann.add(tf.keras.layers.Dense(units = 30 , activation = 'relu'))
ann.add(tf.keras.layers.Dense(units = 30 , activation = 'relu'))
ann.add(tf.keras.layers.Dense(units = 30 , activation = 'relu'))
ann.add(tf.keras.layers.Dense(units = 30 , activation = 'relu'))
ann.add(tf.keras.layers.Dense(units = 30 , activation = 'relu'))
ann.add(tf.keras.layers.Dense(units = 30 , activation = 'relu'))
ann.add(tf.keras.layers.Dense(units = 30 , activation = 'relu'))
ann.add(tf.keras.layers.Dense(units = 30 , activation = 'relu'))
ann.add(tf.keras.layers.Dense(units = 30 , activation = 'relu'))
ann.add(tf.keras.layers.Dense(units = 30 , activation = 'relu'))
ann.add(tf.keras.layers.Dense(units = 30 , activation = 'relu'))


#ADDING THE OUPUT LAYER
ann.add(tf.keras.layers.Dense(units = 1)) #linear need for regression model and mean_squared_error loss function


rmsprop = tf.keras.optimizers.RMSprop(learning_rate=0.0001 , rho = 0.9 , epsilon = 1e-07 , centered = False)
#TRAINING THE ANN
#1)compiling the ann
ann.compile(optimizer = 'rmsprop' , loss = 'mean_squared_error' )

#2)training the ann on the training set
ann.fit(x_train , y_train , batch_size = 10 , epochs = 1000)
对于那个型号,我得到了:

Epoch 1000/1000
160/160 [==============================] - 0s 156us/sample - loss: 235.1505

我所发现的就是调整超参数,我做到了,但我仍然有太大的损失价值我还需要修改它们吗?在我的代码中还有其他问题吗?< /强>

你认为235是什么大的价值?你的因变量有多大?如果你是说我的数据集有多大,它有200个样本。我没有衡量因变量。我把自变量和因变量分开,用标准的定标器只对自变量进行标度。如果我给了你错误的答案,请给我更明确的问题,我会努力回答你更正确的问题。我知道你的因变量的尺度/范围是多少?这是在决定MSE的给定值是否为“好”或“坏”之前首先要问的问题,因为与精度(分类)等指标相反,MSE等指标是真实值,而不是百分比。因变量的范围在1到100之间。在我看来,它们不是太大。