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

Jupyter Notebook中AttributeError: module 'imp'无fit_transform属性的解决方法

问题解决方法

直接错误原因及修复

报错AttributeError: module 'imp' has no attribute 'fit_transform'是因为变量名写错了:
你初始化KNNImputer时用的变量名是impute = KNNImputer(),但倒数第二行调用时写成了imp.fit_transform,把imp改成impute即可修正这个错误。

额外需要修复的问题

原代码还存在一个隐藏错误:sca.fit_transform(df)会运行失败,因为MinMaxScaler只能处理数值型数据,而palmerpenguins.csv里包含字符串分类列(比如species、island、sex等)。需要先将这些分类列编码为数值,再进行缩放和插补。

修正后的完整代码

import pandas as pd
import numpy as np
import plotly.express as px
import plotly.graph_objects as go

df = pd.read_csv('palmerpenguins.csv')
dfc = df.copy()  # 保留原始数据副本

from sklearn.impute import KNNImputer
from sklearn.preprocessing import LabelEncoder
from sklearn.preprocessing import MinMaxScaler

# 处理分类列:将字符串列编码为数值
categorical_cols = dfc.select_dtypes(include=['object']).columns
for col in categorical_cols:
    encoder = LabelEncoder()
    # 用astype(str)避免空值导致编码失败
    dfc[col] = encoder.fit_transform(dfc[col].astype(str))

# 初始化缩放器和插补器
sca = MinMaxScaler()
impute = KNNImputer()

# 对预处理后的数值数据进行缩放
df_sca = pd.DataFrame(sca.fit_transform(dfc), columns=dfc.columns)

# 使用正确的变量名执行插补
new_df = pd.DataFrame(impute.fit_transform(df_sca), columns=dfc.columns)
# 查看插补后是否还有空值
print(new_df.isnull().sum())

内容的提问来源于stack exchange,提问作者Navod Dilshan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 10:54:21