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

如何在scikit-learn的FunctionTransformer中使用feature_names_out?

解决FunctionTransformer中feature_names_out参数报错问题

错误原因

feature_names_out是scikit-learn 1.2.0版本才新增的参数,你的scikit-learn版本低于1.2.0,所以初始化FunctionTransformer时会抛出TypeError: __init__() got an unexpected keyword argument 'feature_names_out'。

解决方案

方案1:升级scikit-learn版本

执行以下命令将scikit-learn升级到1.2.0及以上版本:

pip install --upgrade scikit-learn

升级后,原代码即可正常运行:

from sklearn.preprocessing import FunctionTransformer
import pandas as pd
import numpy as np

X = pd.Series(data=[1, 2, 3], name='numbers')
transformer = FunctionTransformer(np.log, feature_names_out='one-to-one')
transformed_X = transformer.transform(X)
print(transformer.get_feature_names_out())  # 输出['numbers']

方案2:不升级版本,自定义特征名返回逻辑

如果无法升级版本,可以通过继承FunctionTransformer自定义get_feature_names_out方法:

from sklearn.preprocessing import FunctionTransformer
import pandas as pd
import numpy as np

class CustomFunctionTransformer(FunctionTransformer):
    def get_feature_names_out(self, input_features=None):
        # 直接返回输入的特征名,实现one-to-one的效果
        return input_features if input_features is not None else []

X = pd.Series(data=[1, 2, 3], name='numbers')
transformer = CustomFunctionTransformer(np.log)
transformed_X = transformer.transform(X)
print(transformer.get_feature_names_out(['numbers']))  # 输出['numbers']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 07:20:28