python - 如何在 scikit 学习列选择器管道中只选择几列?

标签 python pandas scikit-learn

我正在阅读有关列转换器的 scikitlearn 教程。给定的示例( https://scikit-learn.org/stable/modules/generated/sklearn.compose.make_column_selector.html#sklearn.compose.make_column_selector )有效,但是当我尝试仅选择几列时,它给了我错误。

移动电源

import numpy as np
import pandas as pd
import seaborn as sns

from sklearn.compose import make_column_transformer
from sklearn.compose import make_column_selector

df = sns.load_dataset('tips')
mycols = ['tip','sex']


ct = make_column_transformer(make_column_selector(pattern=mycols)
ct.fit_transform(df)

必需的

我只想要输出中的选择列。

注意
当然,我知道我可以做 df[mycols] ,我正在寻找 scikit 学习管道示例。

最佳答案

如果你不介意 mlxtend ,它有内置的转换器。
使用 mlxtend

from mlxtend.feature_selection import ColumnSelector

pipe = ColumnSelector(mycols)
pipe.fit_transform(df)
对于 sklearn >= 0.20
  • 引用:https://scikit-learn.org/stable/modules/generated/sklearn.compose.ColumnTransformer.html

  • from sklearn.compose import ColumnTransformer
    from sklearn.pipeline import Pipeline
    import seaborn as sns
    
    df = sns.load_dataset('tips')
    mycols = ['tip','sex']
    
    pipeline = Pipeline([
        ("selector", ColumnTransformer([
            ("selector", "passthrough", mycols)
        ], remainder="drop"))
    ])
    
    pipeline.fit_transform(df)
    
    对于 sklearn < 0.20
    from sklearn.base import BaseEstimator, TransformerMixin
    from sklearn.pipeline import Pipeline
    
    class FeatureSelector(BaseEstimator, TransformerMixin):
        def __init__(self, columns):
            self.columns = columns
    
        def fit(self, X, y=None):
            return self
    
        def transform(self, X, y=None):
            return X[self.columns]
    
    
    pipeline = Pipeline([('selector', FeatureSelector(columns=mycols))
                         ])
    
    pipeline.fit_transform(df)[:5]
    

    关于python - 如何在 scikit 学习列选择器管道中只选择几列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62416223/

    相关文章:

    python - 根据多列的 groupby 删除行,仅产生最低值

    python - 从 Pandas/Python 中选定的单元格访问索引/行/列

    python - 如何处理导入错误?

    python - LightGBM中的predict_proba()函数如何在内部工作?

    python - 在给定焦点的情况下在 matplotlib 中绘制椭圆

    python - 以浮点秒数增加初始时间值?

    python - 从python中的sklearn线性回归获取置信区间

    python - 值错误 : Number of features of the model must match the input

    python - 观察tensorflow rnn模型权重

    python - xmlsec1 sign 在命令行上有效,但在 Python 代码上失败