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
相关产品推荐
相关产品推荐

