Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在sklearn管道中访问属性_Python_Scikit Learn_Sklearn Pandas - Fatal编程技术网

Python 在sklearn管道中访问属性

Python 在sklearn管道中访问属性,python,scikit-learn,sklearn-pandas,Python,Scikit Learn,Sklearn Pandas,我在访问sklearn管道中中间步骤的属性时遇到问题。这是我的密码: from sklearn.pipeline import make_pipeline, make_union from sklearn.compose import make_column_transformer from sklearn.impute import SimpleImputer from sklearn.preprocessing import StandardScaler, PowerTransformer,

我在访问sklearn管道中中间步骤的属性时遇到问题。这是我的密码:

from sklearn.pipeline import make_pipeline, make_union
from sklearn.compose import make_column_transformer
from sklearn.impute import SimpleImputer
from sklearn.preprocessing import StandardScaler, PowerTransformer, OneHotEncoder

categorical_pipeline = make_pipeline(
                    SimpleImputer(strategy='constant', fill_value='None'),
                    OneHotEncoder(sparse=False))

ratings_pipeline = make_pipeline(
                RatingEncoder(), 
                StandardScaler(), 
                PowerTransformer(method='yeo-johnson'))

numeric_pipeline = make_pipeline(
                SimpleImputer(strategy='constant', fill_value=0),
                StandardScaler(),
                PowerTransformer(method='yeo-johnson'))

preprocess = make_pipeline(
    make_union(  
        # Select all categorical features and impute NA values into a unique category
        make_column_transformer(
            (categorical_pipeline, select_categorical_features),
            remainder='drop'
        ),      
        # Select all rating-encoded features and convert them to numerical, apply Scaling+PowerTransform
        make_column_transformer(
            (ratings_pipeline, select_rated_features),
            remainder='drop'
        ),   
        # Select all numeric features and impute, Scale+PowerTransform
        make_column_transformer(
            (numeric_pipeline, select_numeric_features),
            remainder='drop'
        ),     
    )
)
我知道如何访问管道的中间步骤。在这里,我使用以下行访问数值_管道的PowerTransformer():

preprocess[0].transformer_list[2][1].transformers[0][1][2]
返回

PowerTransformer(copy=True, method='yeo-johnson', standardize=True)
这让我相信我已经正确地进入了这一步。但是,我想从这个PowerTransformer中提取.lambdas_uu属性,但是当我这样做时,我得到以下结果:

AttributeError: 'PowerTransformer' object has no attribute 'lambdas_'

我做错了什么?我正确地在管道上运行了fit(),并且正确地访问了PowerTransform()步骤,那么为什么我会得到AttributeError?

好的,我自己解决了这个问题

preprocess[0].transformer_list[2][1].transformers[0][1][2].lambdas_
这是不正确的。具体而言,
transformer\u list
transformers
返回预安装变压器,而不是后安装变压器。以下代码起作用:

preprocess.steps[0][1].transformer_list[2][1].transformers_[0][1][2].lambdas_

请注意,您可以使用属性
named_steps['xxx']
(对于管道)和
named_transformers['xxx']
(对于ColumnTransformer)。