[Deep Learning] Data Preprocessing


📖 ケラスの創始者に学ぶ深い学習
データプリプロセッシング
Vectorization
ニューラルネットワークでは,すべての入力とターゲットは浮動小数点数データからなるテンソルでなければならない.処理するデータをテンソルに変換するステップをデータベクトル化と呼ぶ.
Normalization
データの各特性の範囲が異なると学習に影響するため,類似の範囲を持つように処理する必要がある.正規化により,各特性の平均処理は0,標準偏差は1とした.
from sklearn.preprocessing import MinMaxScaler

scaler1 = MinMaxScaler()
X_normalization = scaler1.fit_transform(X)
  • 標準化
  • from sklearn.preprocessing import StandardScaler
    
    scaler2 = StandardScaler()
    X_standardization = scaler2.fit_transform(X)
    Missing Value
    データの一部の値が失われることがよくあります.これらの漏れ値を処理します.
    DF.isnull() # 결측치를 True로 출력
    
    DF.isnull().sum(axis=0) # 각 열 별 결측치 개수 확인, 행 방향
    DF.isnull().sum(axis=1) # 열 방향
    
    DF.dropna(thresh=100, axis=1) # 결측치 100개 이상인 열 삭제
    DF.dropna(subset=['column_name'], how='any', axis=0) # 결측치가 한 개라도 있는 행 삭제
    
    # 결측치를 평균값으로 치환
    DF['column_name'].fillna(int(DF['column_name'].mean(axis=0)), inplace=True)
    
    # 결측치를 최빈값으로 치환
    most_freq = DF['column_name'].value_counts(dropna=True).idxmax()
    DF['column_name'].fillna(most_freq, inplace=True)
    
    # 결측치를 이전 데이터 포인트로 치환
    DF['column_name'].fillna(method='ffill', inplace=True)
    
    # 결측치를 다음 데이터 포인트로 치환
    DF['column_name'].fillna(method='bfill', inplace=True)