首页 > 解决方案 > 错误:“ColumnTransformer”对象没有属性“_n_features”

问题描述

我通过加载 .pkl 文件来预测分类模型的值。它在我的本地工作,但在 AWS lambda 函数中引发错误。本地和 AWS 上的 pkl 文件是相同的,所以问题不应该在 pkl 文件中。另外,我正确阅读了 pkl 文件。
错误:“ColumnTransformer”对象没有属性“_n_features”

ind_var = pd.DataFrame({"a":1328, "b":12.0, "c": "MAP")
with BytesIO() as data:
            s3.Bucket("xxxxxx").download_fileobj("model.pkl", data)
            data.seek(0) 
            model = joblib.load(data)
 print(model.predict(ind_var))

用于管道的代码

numeric_transformer = Pipeline(steps= ["scaler", StandardScaler())])

categorial_transformer = Pipeline(steps = [('imputer', SimpleImputer(strategy='constant', fill_value='missing')),("onehot", OneHotEncoder(handle_unknown = 'ignore'))])

preprocessor = ColumnTransformer(transformers = [("num", numeric_transformer,numeric),("cat",categorial_transformer, cat )])

标签: pythonpandasscikit-learn

解决方案


刚刚通过反复试验了解到,由于库版本的不同,会出现此问题。我们可以通过 requirements.txt 查看不同环境下库的版本


推荐阅读