Encoder and Scaler
17697 ワード
Label-encoder
import pandas as pd
df = pd.DataFrame({
'A' : ['a', 'b', 'c', 'a', 'b'],
'B': [1, 2, 2, 1, 0]
})
from sklearn.preprocessing import LabelEncoder
le = LabelEncoder()
le.fit(df['A'])
# df 의 A컴럼기준으로 fit
le.classes_
le.transform(df['A'])
# output : array([0, 1, 2, 0, 1])
df['le_A'] = le.transform(df['A'])
1回の運転
le.fit_transform(df['A'])
> output : array([0, 1, 2, 0, 1])
# 해당 문자가 어떻게 바뀌었는지 알려줌
le.transform(['a'])
# output : array([0])
# 역으로 원래 라벨을 보여줌
le.inverse_transform(df['B'])
> output : array(['b', 'c', 'c', 'b', 'a'], dtype=object)
min-max scaler
min-max scalingとは?
異なるサイズを統一するためにサイズを変換する概念です.ここでは最小値を0最大値に変換して1に変換します.
元のデータ分布を維持する場合、通常化とクラスタ外の点はあまり対応しません.
x′=x−min(x)max(x)−min(x)x' = {x - min(x)\over\max(x) - min(x)}x′=max(x)−min(x)x−min(x)
意味:全長に分けて!
df = pd.DataFrame({
'A':[10, 20, -10, 0 ,25],
'B':[1, 2, 3, 1, 0]
})
from sklearn.preprocessing import MinMaxScaler
mms = MinMaxScaler()
mms.fit(df)
df_mms = mms.transform(df)
df_mms
# output :
array([[0.57142857, 0.33333333],
[0.85714286, 0.66666667],
[0. , 1. ],
[0.28571429, 0.33333333],
[1. , 0. ]])
# 역변환
mms.inverse_transform(df_mms)
# output:
array([[ 10., 1.],
[ 20., 2.],
[-10., 3.],
[ 0., 1.],
[ 25., 0.]])
# 한번에 적용
mms.fit_transform(df)
Standard Scaler
from sklearn.preprocessing import StandardScaler
ss = StandardScaler()
ss.fit(df)
# 평균과 표준편차
ss.mean_, ss.scale_
# transform
df_ss = ss.transform(df)
df_ss
# output :
array([[ 0.07808688, -0.39223227],
[ 0.85895569, 0.58834841],
[-1.48365074, 1.56892908],
[-0.70278193, -0.39223227],
[ 1.2493901 , -1.37281295]])
# 한번에 하기
ss.fit_transfrom(df)
Robust Scaler
df = pd.DataFrame({
'A':[-0.1, 0., 0.1, 0.2, 0.3, 0.4, 1.0, 1.1, 5.0]
})
# 해당 df를 다 스케일 해보자!
from sklearn.preprocessing import MinMaxScaler, StandardScaler, RobustScaler
mm = MinMaxScaler()
ss = StandardScaler()
rs = RobustScaler()
df_scaler = df.copy()
df_scaler['MinMax'] = mm.fit_transform(df)
df_scaler['Standard'] = ss.fit_transform(df)
df_scaler['Robust'] = rs.fit_transform(df)
df_scaler
Reference
この問題について(Encoder and Scaler), 我々は、より多くの情報をここで見つけました https://velog.io/@varieyty_/encoder-and-scalerテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol