• Home
  • About
    • 기근화 photo

      기근화

      A man who want to be Batman

    • Learn More
    • Github
  • Posts
    • All Posts
    • All Tags
  • Projects

sklearn FunctionTransformer

01 Jul 2019

Reading time ~1 minute

Pipeline

scikit-learn에서 pipeline은 엄청 중요한 역할을 한다.

GridSearchCV의 핵심이며, pipeline을 통해 search할 범위의 set을 손쉽게 control이 가능하다.

맨날 이용하다가 scikit-learn에서 몇 컬럼들만 추출하여 작업하는 경우가 많았고, 이러한 기능이 있을 거 같아서 찾아보았다.

FunctionTransformer

위 function을 통해서 생각하는 코드를 구현할 수 있다.

물론, partial function을 이용하면, pipeline을 구성할 때 원하는 컬럼을 사용자 정의에 맞게 구성이 가능하다


from sklearn.pipeline import make_union, make_pipeline
from sklearn.preprocessing import FunctionTransformer,MinMaxScaler
from functools import partial

def select_columns(dataframe=None,columns=[]):
    from functools import partial

    def _select_columns(dataframe,columns):
        return dataframe[columns]

    return partial(_select_columns,columns=columns)

vec = FunctionTransformer(select_columns(columns=["admit","gre"]), validate=False)

전체 코드


from sklearn.pipeline import make_union, make_pipeline

from sklearn.preprocessing import FunctionTransformer

def select_columns(dataframe=None,columns=[]):
    from functools import partial

    def _select_columns(dataframe,columns):
        return dataframe[columns]

    return partial(_select_columns,columns=columns)

vec = FunctionTransformer(select_columns(columns=["admit","gre"]), validate=False)

partial function을 이용해 return은 function이다 따라서, callable하기 때문에

pipeline을 구성하기 위한 line이 된다. ``` python

def select_columns(dataframe=None,columns=[]): from functools import partial

def _select_columns(dataframe,columns):
    return dataframe[columns]

return partial(_select_columns,columns=columns)

> 아래 코드는 kwargs를 통하여 columns를 지정하므로 make_pipeline 이나
>
> ``` python
> from sklearn.model_selections import Pipeline
> ```
> 의 Pipeline에서 contructor 부분에서 호출할 때도 단순히 변수 자체를 넣어주면 된다.

``` python

from sklearn.preprocessing import FunctionTransformer

vec = FunctionTransformer(select_columns(columns=["admit","gre"]), validate=False)




pythonsklearn Share Tweet +1
repo="ghk829" issue-term="pathname" theme="github-dark" crossorigin="anonymous" async>