首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何修复“输入包含NaN、无穷大或对于dtype(‘float64’)来说太大的值。”在计算MSLE时

如何修复“输入包含NaN、无穷大或对于dtype(‘float64’)来说太大的值。”在计算MSLE时
EN

Stack Overflow用户
提问于 2019-04-27 23:09:49
回答 1查看 2.2K关注 0票数 0

在尝试计算均方对数误差时,我得到以下错误:

ValueError: Input contains NaN, infinity or a value too large for dtype('float64').

计算均方误差不会产生误差。以下代码可用于重现该问题:

代码语言:javascript
复制
from sklearn.datasets import load_boston
dataset = load_boston()

import pandas as pd
df = pd.DataFrame(dataset.data, columns=dataset.feature_names, )

df["MEDV"] = dataset.target

#tried this, no difference
df = df.reset_index()

df.isnull().sum()
#No missing values

df.dtypes
# all float64

cols = ["LSTAT", "RM"]
X = df[cols]#.astype(np.float)
y = df["MEDV"]#.astype(np.float)

from sklearn.linear_model import LinearRegression
slr = LinearRegression()
slr.fit(X, y)
y_pred = slr.predict(X)

np.all(np.isfinite(X))
# true
np.all(np.isfinite(y))
#true

np.all(np.isfinite(y_pred))
#true

from sklearn.metrics import mean_squared_error
mse = mean_squared_error(y, y_pred)
print(mse)

from sklearn.metrics import mean_squared_log_error
# THIS produces the error message:
msle = mean_squared_log_error(y, y_pred)
print(msle)

我做了几次检查:

  1. no
    1. no infinite
    2. is float64

    (不是无限的值不是无限的值)

我不明白为什么它会给我这个错误。有人知道我做错了什么吗?

致以亲切的问候,

Jaap

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-28 01:11:27

运行:

代码语言:javascript
复制
y_pred[y_pred<0]

你会得到:

代码语言:javascript
复制
array([-4.66638608, -2.08933711])

你知道,这是一个自然对数的问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55881915

复制
相关文章

相似问题

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