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

使用Python Imputer时出现Isnan不支持输入类型的错误求助

解决"Isnan is not supported for the input types"错误

嘿,我帮你排查下这个问题!你遇到的这个错误主要是两个原因导致的,咱们一步步来解决:

1. 已弃用的Imputer与错误的缺失值参数设置

在新版scikit-learn里,sklearn.preprocessing.Imputer已经被官方弃用并移除了,取而代之的是sklearn.impute.SimpleImputer。另外你之前设置的missing_values='nan'是字符串类型,但实际数据里的缺失值标记应该是numpy的np.nan(数值类型的缺失标识),这就导致程序没法正确识别缺失值,进而触发了isnan不支持输入类型的错误。

2. 可能数据列并非数值类型

如果你的数据集里第2、3列(对应代码里的X[:,1:3])是字符串格式,那即使识别到缺失值,也没法计算均值,同样会引发类似错误。

修改后的正确代码

import numpy as np 
import matplotlib.pyplot as plt 
import pandas as pd 

# 导入数据集
dataset = pd.read_csv('Data.csv') 
X = dataset.iloc[:,:-1].values 
Y = dataset.iloc[:,3].values 

# 处理缺失数据 - 使用新版SimpleImputer
from sklearn.impute import SimpleImputer  
# 指定缺失值为numpy标准的np.nan,策略为均值,按列计算
imputer = SimpleImputer(missing_values=np.nan, strategy='mean')  
# 拟合需要处理的列
imputer.fit(X[:,1:3]) 
# 转换并填充缺失值
X[:,1:3] = imputer.transform(X[:,1:3])

额外注意事项

  • 如果你非要用旧版的Imputer(非常不推荐,因为官方已弃用,未来版本会彻底移除),那至少要把missing_values='nan'改成missing_values=np.nan,确保程序能识别正确的缺失值标记。
  • 运行代码前可以先检查数据类型:比如用print(dataset.dtypes)查看各列类型,如果第2、3列是object(字符串)类型,先转成数值类型:
    X[:,1:3] = X[:,1:3].astype(float)
    

内容的提问来源于stack exchange,提问作者Dawood Zaidi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:37:13