Python Tensorflow神经网络具有很高的误差和简单的回归

Python Tensorflow神经网络具有很高的误差和简单的回归,python,tensorflow,machine-learning,keras,data-science,Python,Tensorflow,Machine Learning,Keras,Data Science,我正在尝试建立一个NN,用Tensorflow中的Keras进行回归 我试图根据一组特征预测歌曲在排行榜上的排名,我发现低特征1、高特征2和高特征3与在排行榜上的高位置(低输出排名,如位置1)之间存在着很强的相关性 然而,在对我的模型进行培训之后,MAE在培训和测试集上都达到了3500左右(非常非常高)。如果加上一些值,它似乎给出了所有3个特征值都很低的观测值的最低输出排名 我认为这可能与我规范化数据的方式有关。在将其放入一个数据框(每个功能都有一列)后,我使用以下代码进行规范化: def no

我正在尝试建立一个NN,用Tensorflow中的Keras进行回归

我试图根据一组特征预测歌曲在排行榜上的排名,我发现低特征1、高特征2和高特征3与在排行榜上的高位置(低输出排名,如位置1)之间存在着很强的相关性

然而,在对我的模型进行培训之后,MAE在培训和测试集上都达到了3500左右(非常非常高)。如果加上一些值,它似乎给出了所有3个特征值都很低的观测值的最低输出排名

我认为这可能与我规范化数据的方式有关。在将其放入一个数据框(每个功能都有一列)后,我使用以下代码进行规范化:

def normalise_dataset(df):
    return df-(df.mean(axis=0))/df.std()
我使用的是一个序列模型,一个密集的输入层有64个神经元,一个密集的输出层有一个神经元。以下是其定义代码:

model = keras.Sequential([
    keras.layers.Dense(64, activation=tf.nn.relu, input_dim=3),
    keras.layers.Dense(1)
])
optimizer = tf.train.RMSPropOptimizer(0.001)
model.compile(loss='mse', optimizer=optimizer, metrics=['mae'])
我是一名软件工程师,不是一名数据科学家,所以我不知道这个模型设置是否适合我的问题,我非常愿意听取关于如何使它更适合我的用例的建议

谢谢

编辑:这是我训练数据的前几个单位,大约有100000个单位。最后一列(finalPos)包含标签,我试图预测的字段

chartposition,tagcount,artistScore,finalPos
256,191,119179,4625
256,191,5902650,292
256,191,212156,606
205,1480523,5442
256,195,5675757,179
256,195,933171,7745

第一件显而易见的事情是,您正在以错误的方式规范化数据。正确的方法是

return (df - df.mean(axis=0))/df.std()

我刚刚更改了括号,但基本上它是(数据-平均值)除以标准偏差,而你是用标准偏差除以平均值。

第一件明显的事情是,你用错误的方式规范化了数据。正确的方法是

return (df - df.mean(axis=0))/df.std()

我刚刚更改了括号,但基本上它是(数据-平均值)除以标准偏差,而你是用标准偏差除以平均值。

好的,回过头来看,这有趣地增加了MAE!我猜我的问题出在其他地方。好的,回过头来报道,这有趣地增加了MAE甚至更多!我想我的问题出在别的地方。你能举个例子说明你的数据(输入和输出)是什么样子的吗?”“高级和低级功能”没有帮助。@DocDriven,用一个例子编辑了原始文章。感谢你用Tensorboard可视化你的模型训练,看看你是否能从中得到任何线索。你的标准化看起来是错误的,应该是(df-mean)/std,注意括号。你试过不同的拓扑和/或激活函数吗?另外,您的第四个数据示例似乎遗漏了一个条目。另外,您说您使用了MAE,但在编译步骤中似乎使用了MSE。请澄清这一点。你能举例说明你的数据(输入和输出)是什么样子的吗?”“高级和低级功能”没有帮助。@DocDriven,用一个例子编辑了原始文章。感谢你用Tensorboard可视化你的模型训练,看看你是否能从中得到任何线索。你的标准化看起来是错误的,应该是(df-mean)/std,注意括号。你试过不同的拓扑和/或激活函数吗?另外,您的第四个数据示例似乎遗漏了一个条目。另外,您说您使用了MAE,但在编译步骤中似乎使用了MSE。请澄清这一点。