You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于价值指标的ANN股票收益预测模型训练报错求助

股票收益预测模型训练NaN问题排查

问题背景

我是Python和机器学习新手,想通过实战入门。手里有300+只股票的数据集,每只股票包含4项3年前的价值指标(比如市净率、市盈率、自由现金流增长率等),以及过去3年的股价涨幅数据。目标是用这些基本面指标构建模型,预测股票3年收益。

异常现象

训练阶段输出

Epoch 1/100
8/8 [==============================] - 1s 3ms/step - loss: nan - accuracy: 0.0000e+00
Epoch 2/100
8/8 [==============================] - 0s 3ms/step - loss: nan - accuracy: 0.0000e+00
Epoch 3/100

预测阶段输出

执行预测代码:

X_predict = [[1.43, 0.73, 0.37, -0.92]]
print(seann.predict(sc.transform(X_predict)))

得到输出:

1/1 [==============================] - 0s 63ms/step
[[nan]]

我怀疑的问题点

  • 输入数据标准化环节,代码如下:
from sklearn import preprocessing
from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
X_train = sc.fit_transform(X_train)
X_test = sc.transform(X_test)
  • 模型初始化参数设置,代码如下:
seann = tf.keras.models.Sequential()
seann.add(tf.keras.layers.Dense(units=4, activation='relu'))
seann.add(tf.keras.layers.Dense(units=4, activation='relu'))
seann.add(tf.keras.layers.Dense(units=1, activation='linear'))
seann.compile(optimizer = 'adam' , loss = 'mean_squared_error', metrics = ['accuracy'])

问题排查与解决思路

1. 数据层面是核心诱因

首先查原始数据有没有问题:

  • 检查X_train、X_test、y_train里有没有NaN或者无穷值,用df.isna().sum()或者np.isinf(X_train).any()就能验证。如果原始数据有缺失,标准化后直接会生成NaN,后续训练全崩。
  • 再看目标变量y(股价涨幅)的分布,有没有极端值(比如某只股票涨幅几千%)。MSE损失计算时遇到这种极端值,会导致梯度爆炸,权重更新后直接变成NaN。

2. 标准化环节的潜在坑

你的标准化流程是对的,但要确认:

  • X_train全是数值型数据,没有混入字符串或者分类值,不然标准化会失败产生NaN。
  • 预测时X_predict的特征顺序和训练集完全一致,虽然这个不会直接导致NaN,但顺序错了预测结果肯定不对。

3. 模型设置的明显错误

  • 用了分类任务的指标做回归:你这是回归任务(预测连续的收益数值),但metrics=['accuracy']是分类任务的指标,完全不适用,输出的0准确率毫无意义,虽然不会直接导致NaN,但别再用了,换成metrics=['mean_absolute_error']这类回归指标。
  • 权重更新溢出:默认Adam的学习率是0.001,如果y的数值范围很大(比如收益是1000代表10倍涨幅),学习率太高会导致权重更新幅度过大,直接出现NaN。可以试试把学习率调低,比如optimizer=tf.keras.optimizers.Adam(learning_rate=0.0001)。
  • ReLU激活虽然可能导致部分神经元失活,但一般不会直接产生NaN,优先级低于前面的问题。

4. 快速验证步骤

  1. 先清理数据:删掉含NaN/inf的样本,或者用均值/中位数填充缺失值。
  2. 对y做异常值截断:比如去掉涨幅top1%和bottom1%的样本,避免极端值干扰损失计算。
  3. 把模型编译里的metrics=['accuracy']去掉或者换成回归指标。
  4. 调低学习率,重新训练试试。

内容的提问来源于stack exchange,提问作者Sean Walsh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 18:31:02