SseopE
SseopE
SseopE
전체 방문자
오늘
어제
  • 분류 전체보기 (44)
    • Programming (3)
      • JAVA (3)
    • Spring (7)
      • 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 (5)
      • Spring 공부 (0)
    • Infra (6)
      • Docker (3)
      • Kubernetes (3)
      • Kafka (0)
    • Machine Learning (2)
      • Scikit-Learn (1)
      • MLOps (1)
      • BentoML (0)
      • Kubeflow (0)
    • OS (2)
      • Linux (2)
    • Algorithm (23)
      • Sorting (7)
      • BOJ (15)
      • Programmers (0)
      • Data Structure (1)
    • 특강 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 스웜 모드
  • 2580번
  • java
  • 2981번
  • 자바
  • 도커
  • boj
  • 2275번
  • 백준
  • docker
  • resource
  • container
  • TransformMixin
  • scikit learn
  • 1931번
  • 1541번
  • Spring boot
  • Kubernetes
  • BaseEstimator
  • Spring

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
SseopE

SseopE

Machine Learning/Scikit-Learn

Scikit Learn 커스텀 변환기

2022. 1. 15. 02:24

사이킷 런에는 원하는 기능을 구현하는 변환기를 제작할 수 있다.

이는 BaseEstimator 와 TransformerMixin을 이용하여 제작하게 된다.

 

from sklearn.base import BaseEstimator, TransformerMixin

# 열 인덱스
rooms_ix, bedrooms_ix, population_ix, households_ix = 3, 4, 5, 6

class CombinedAttributesAdder(BaseEstimator, TransformerMixin):
    def __init__(self, add_bedrooms_per_room=True): # *args 또는 **kargs 없음
        self.add_bedrooms_per_room = add_bedrooms_per_room
    def fit(self, X, y=None):
        return self  # 아무것도 하지 않습니다
    def transform(self, X):
        rooms_per_household = X[:, rooms_ix] / X[:, households_ix]
        population_per_household = X[:, population_ix] / X[:, households_ix]
        if self.add_bedrooms_per_room:
            bedrooms_per_room = X[:, bedrooms_ix] / X[:, rooms_ix]
            return np.c_[X, rooms_per_household, population_per_household,
                         bedrooms_per_room]
        else:
            return np.c_[X, rooms_per_household, population_per_household]

attr_adder = CombinedAttributesAdder(add_bedrooms_per_room=False)
housing_extra_attribs = attr_adder.transform(housing.to_numpy())

위의 코드는 hands on machine learning 의 조합 특성을 추가하는 간단한 변환기의 예시이다.

캘리포니아의 집 가격 예측을 진행함에 있어서 특성들을 조합하여 새로운 특성을 구성해내는 변환기이다.

 

BaseEstimator와 TransformerMixin을 상속 받는 특정 클래스를 만든다.

Mixin이라는 이름은 파이썬에서 객체의 기능을 확장하려는 목적으로 만들어진 클래스를 뜻하는 말이다.

TransformerMixin 클래스는 fit_transform() 메소드 하나를 가지고 있으며 이를 상속받는 모든 파이썬 클래스에 이 메소드를 제공한다.

TransformerMixin의 fit_transform() 메소드는 fit()과 transform()을 단순히 연결한것이다.

fit_transform() 메소드는 pipeline에 여러 변환기 혹은 추정기를 추가하여 사용할때 필요한 메소드이다.

pipeline에서 fit_transform() 메소드를 출력하며, 해당 메소드가 없더라도 fit()과 transform() 메소드를 차례로 호출한다고 한다.

 

    SseopE
    SseopE

    티스토리툴바