19.正規化

2062 ワード

  • 各変数のデジタルデータの相対的なサイズの違いにより、機械学習分析の結果が異なる場合があります.
  • デジタルデータの相対サイズ差
  • を解消する必要がある.

    1)正規化:列を最大値に分割する方法


    :各列に属するデータ値を同じサイズの割合で表示します.
    :標準化されたデータ範囲は0~1または-1~1です.
    import pandas as pd
    import numpy as np
    
    df = pd.read_csv('./auto-mpg.csv', header = None)
    df.columns = ['mpg', 'cylinders', 'displacement', 'horsepower', 'weight', 'acceleration', 'model year',
              'origin', 'name']
    df['horsepower'].replace('?', np.nan, inplace = True)
    df.dropna(subset = ['horsepower'], axis = 0, inplace = True)
    df['horsepower'] = df['horsepower'].astype('float')
    
    print(df.horsepower.describe())
    
    df.horsepower = df.horsepower/abs(df.horsepower.max())
    # horsepower열의 값을 최대값으로 나누는 과정 (정규화 과정)
    
    print(df.horsepower.head())
    print(df.horsepower.describe())

    2)正規化-列を(最大値-最小値)に分割する方法


    :各値から列の最小値(値-最小値)を減算します.
    列を(最大値-最小値)に分割する方法
    import pandas as pd
    import numpy as np
    
    df = pd.read_csv('./auto-mpg.csv', header = None)
    df.columns = ['mpg', 'cylinders', 'displacement', 'horsepower', 'weight', 'acceleration', 'model year',
              'origin', 'name']
    df['horsepower'].replace('?', np.nan, inplace = True)
    df.dropna(subset = ['horsepower'], axis = 0, inplace = True)
    df['horsepower'] = df['horsepower'].astype('float')
    
    print(df.horsepower.describe())
    print('\n')
    
    min_x = df.horsepower - df.horsepower.min()
    # 열의 값에서 최소값을 뺌
    
    min_max = df.horsepower.max() - df.horsepower.min()
    # 최대값에서 최소값을 뺌
    
    df.horsepower = min_x / min_max
    # (값 - 최소값) / (최대값 - 최소값)
    
    print(df.horsepower.head())
    print('\n')
    print(df.horsepower.describe())