我的数据没有nan,但我一直得到有限的误差

2024-06-28 15:50:01 发布

您现在位置:Python中文网/ 问答频道 /正文

上下文

我正在尝试标准化数据以运行ML模型。我正在对我的数据使用np.log

plt.hist(np.log(Portfolio_rtns['Aveva Returns']))

我也试过这样做:

log_Aveva = np.log(Portfolio_rtns['Aveva Returns'])
log_Aveva.hist();

但是你会得到这个错误

ValueError: supplied range of [-inf, -1.2977785811129585] is not finite

我检查了数据,甚至确保用0替换任何nan

我找到了使用np.isfinitethis状态。但我觉得我的数据分布似乎因此而混乱

Port = np.isfinite(Portfolio_rtns['Aveva Returns'])
plt.hist(np.log(Port));

我还运行了这个函数

# Square root can also make normal distributed data
plt.hist(np.sqrt(Portfolio_rtns['Aveva Returns']));

虽然我得到了图表,但我得到了这个错误:

358: RuntimeWarning: invalid value encountered in sqrt
  result = getattr(ufunc, method)(*inputs, **kwargs)

问题

我的数据有问题吗


Tags: 数据模型logport错误nppltsqrt
1条回答
网友
1楼 · 发布于 2024-06-28 15:50:01

因此,在仔细阅读Coursera之后,我发现使用log1p将整个数据中的所有零数加1。也可以消除负面影响。因此,解决方案是:

plt.hist(np.log1p(Portfolio_rtns['Aveva Returns']));

  1. data.describe()#“数据”是您的数据
  2. 找到数据的最小值
  3. 将此最小值添加到整个数据中,以将所有零和负数转换为正和大于0
  4. 运行数据
  5. 运行ML模型后,将其转换回正常值(这也适用于上述情况)

相关问题 更多 >