Как выбрать только несколько столбцов в конвейере селектора столбцов scikit learn? - PullRequest
1 голос
/ 16 июня 2020

Я читал учебник scikitlearn о преобразователе столбцов. Данный пример (https://scikit-learn.org/stable/modules/generated/sklearn.compose.make_column_selector.html#sklearn .compose.make_column_selector ) работает, но когда я попытался выбрать только несколько столбцов, он выдает ошибку.

MWE

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 Learn пример конвейера.

1 Ответ

2 голосов
/ 16 июня 2020

Если вы не возражаете, mlxtend, в нем есть встроенный преобразователь для этого.

Использование mlxtend

from mlxtend.feature_selection import ColumnSelector

pipe = ColumnSelector(mycols)
pipe.fit_transform(df)

Использование sklearn

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]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...