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

如何解决ValueError:输入含NaN、无穷大或dtype('float64')超限值报错

问题根因定位
  • 缺失值触发报错:你提供的CSV中最后一行玩家Edgey的pr10tournamentsv5字段为空,pandas读取后会将空值识别为NaN,sklearn的线性回归模型不允许输入包含空值,这是报错的核心原因
  • 数值类型异常:CSV中大部分数值被双引号包裹,pandas默认会将其识别为字符串类型,后续模型计算时也会触发类型不兼容问题
  • 你猜测的数值过大问题不存在:float64类型支持最大数值约为10^308,你现有数据最大仅为两万多,完全不会触发溢出
修复步骤
  1. 统一转换特征字段为数值类型,无法转换的内容自动设为NaN
  2. 处理空值:样本量少的情况下可以选择填充均值,也可以直接删除带空值的行
  3. 加入空值校验逻辑,确认输入数据合规后再送入模型训练
修复后完整代码
import sklearn
import pandas as pd 
import numpy as np
from sklearn import linear_model

# 读取CSV
data = pd.read_csv("pr.csv", sep=";")
# 选中需要的字段并统一转为数值类型
use_cols = ["pr10tournaments", "pr10tournamentsv2", "pr10tournamentsv3", "pr10tournamentsv4", "pr10tournamentsv5"]
data = data[use_cols].apply(pd.to_numeric, errors='coerce')

# 处理空值,这里用均值填充,也可以换成data = data.dropna()直接删空行
data = data.fillna(data.mean())

# 校验是否还有空值
print("各字段空值数量:\n", data.isnull().sum())

predict = "pr10tournaments"
x = np.array(data.drop([predict], axis=1))
y = np.array(data[predict])

x_train, x_test, y_train, y_test = sklearn.model_selection.train_test_split(x, y, test_size=0.1, random_state=42)
linear = linear_model.LinearRegression()
linear.fit(x_train, y_train)
acc = linear.score(x_test,y_test)
print("模型准确率:", acc)

内容的提问来源于stack exchange,提问作者Alex is funny

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 18:36:05