Python Class 이해하기

이경주 Junior data analyst·2024년 5월 21일
0

Python

목록 보기
5/8

0. 개요

RNN을 사용할 때, 혹은 만든 코드를 배포할 때 Class 함수 사용에 대한 필요성을 느껴서 독학으로 얻은 지식을 조금이나마 작성하려한다.

설명보단 코드 하나를 예시로 들어서 작성하면 좀 더 이해하기 쉬울 것 같아서, 정규화하는 방법을 토대로 설명을 이어간다.


1. Scaling(정규화) 방법

def scaling(data, scaler_option = 'standard'):
"""
*추가로 모든 함수마다 이런식으로 doc을 작성해주면 나중에 함수를 불러올 때, 
직관적으로 이해하기가 쉬워진다.

0. data = data
1. scaler_option = 'standard' ; 'robust' ; 'minmax'
2. option에 없는 걸 선택하면 Error 표시
"""
    
    if scaler_option == 'standard':
        scaler = StandardScaler()
    
    elif scaler_option == 'robust':
        scaler = RobustScaler()
    
    elif scaler_option == 'minmax':
        scaler = MinMaxScaler()
    else:
        raise ValueError('choose one. standard, robust, minmax')
    
    scaled_data = pd.DataFrame(scaler.fit_transform(data), columns = data.columns).reset_index(drop = True)
    
    return scaled_data

2. 자 이걸 이제 Class로 변환하자

class scaling:
    def __init__(self, scaler_option='standard'):
        if scaler_option == 'standard':
            self.scaler = StandardScaler()
        elif scaler_option == 'robust':
            self.scaler = RobustScaler()
        elif scaler_option == 'minmax':
            self.scaler = MinMaxScaler()
        else:
            raise ValueError('choose one. standard, robust, minmax')

    def fit_transform(self, data):
        scaled_data = pd.DataFrame(self.scaler.fit_transform(data), columns=data.columns).reset_index(drop=True)
        return scaled_data

위에 def랑 달라진 점은 없다.
하지만 Class를 사용할 때 가장 중요한 부분인, __init__ 부분과 self 부분을 자세히 봐야 한다.

  1. __init__ : 초기 상태를 설정
  2. self : 객체의 속성에 접근 할수 있도록 설정

__init__ 은 함수를 중복해서 사용하지 못하도록 막게하는 장치라 생각하면 된다.

2.1 Class 불러와서 적용하기

scaler = scaling(scaler_option='standard')
scaled_data = scaler.fit_transform(data)
profile
Good afternoon, Good evening and Good night

0개의 댓글