首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ValueError:当使用sklearn时,输入包含NaN、无穷大或dtype('float64')太大的值。

ValueError:当使用sklearn时,输入包含NaN、无穷大或dtype('float64')太大的值。
EN

Stack Overflow用户
提问于 2022-07-31 16:29:20
回答 1查看 224关注 0票数 2

我使用IterativeImputer (from sklearn.impute import IterativeImputer)处理一个小的(42* 7)规范化(mean=0,方差= 1) numpy数据,其中包括缺失的值。当我对此数据激活IterativeImputer命令fit时,会收到以下警告(多次):

代码语言:javascript
运行
复制
 RuntimeWarning: overflow encountered in square eigen_vals_ = S ** 2

 RuntimeWarning: invalid value encountered in true_divide
  gamma_ = np.sum((alpha_ * eigen_vals_) /

 RuntimeWarning: overflow encountered in matmul
  ret = a @ b

最后,我得到了以下错误:

代码语言:javascript
运行
复制
ValueError: Input contains NaN, infinity or a value too large for dtype('float64').

如果我将max_iter值(从4000更改为100),则不会出现警告和错误,但这不是一个好的解决方案。

这些警告和错误的原因是什么,以及如何修复?

数据的代码和PrintScreen附后如下:

代码语言:javascript
运行
复制
import numpy as np
import pandas as pd

x= pd.read_csv("small datasets/check_31_7.csv", header= None)
z= x.to_numpy()

from sklearn.experimental import enable_iterative_imputer
from sklearn.impute import IterativeImputer
from numpy import isnan


miss_mean_imputer = IterativeImputer(missing_values=np.nan, max_iter= 4000)
miss_mean_imputer = miss_mean_imputer.fit(z)
imputed_data = miss_mean_imputer.transform(z)
print("")

数据(第41行没有出现在图片中):

EN

Stack Overflow用户

回答已采纳

发布于 2022-08-03 04:59:38

IterativeImputer根据回归模型填充缺失的值。我假设,由于您正在进行大量的迭代并得到溢出错误,所以在每次迭代之后,丢失的值都在增长,直到达到无穷大为止。

一种解决方案是在每次迭代后设置一个min或最大值,至少停止警告和错误,从而完成一些后处理。这只是通过提供一个min_valuemax_value参数来完成,如下所示:

代码语言:javascript
运行
复制
miss_mean_imputer = IterativeImputer(missing_values=np.nan, max_iter= 4000, min_value=-3, max_value=3)
票数 4
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73185027

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档