RNN을 사용할 때, 혹은 만든 코드를 배포할 때 Class 함수 사용에 대한 필요성을 느껴서 독학으로 얻은 지식을 조금이나마 작성하려한다.
설명보단 코드 하나를 예시로 들어서 작성하면 좀 더 이해하기 쉬울 것 같아서, 정규화하는 방법을 토대로 설명을 이어간다.
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
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 부분을 자세히 봐야 한다.
__init__ 은 함수를 중복해서 사용하지 못하도록 막게하는 장치라 생각하면 된다.
scaler = scaling(scaler_option='standard')
scaled_data = scaler.fit_transform(data)