始める無料で始める

対数変換

前の演習ではデータを線形にスケーリングしましたが、これはデータの形状には影響しません。データが正規分布(もしくはそれに近い分布)している場合には非常に有効で、多くのMachine Learningモデルがこの仮定を置きます。たとえば集団の身長や体重のように、正規性に近いデータを扱うこともあります。一方で、現実世界の多くの変数はこのパターンに従いません。たとえば賃金や集団の年齢などです。この演習では、so_numeric_dfConvertedSalary 列に対してログ変換を行います。この列は小さな値の近くに多くのデータが集中している一方で、非常に大きな値も含みます。このような分布は右裾が長い(ロングテール)と言われます。

この演習はコースの一部です

Python で学ぶ Machine Learning のための特徴量エンジニアリング

コースを見る

演習の手順

  • sklearnpreprocessing モジュールから PowerTransformer をインポートします。
  • PowerTransformer()pow_trans としてインスタンス化します。
  • so_numeric_dfConvertedSalary 列に PowerTransformer を当てはめます(fit)。
  • 直前に当てはめたスケーラーで同じ列を変換します(transform)。

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。

# Import PowerTransformer
from sklearn.preprocessing import ____

# Instantiate PowerTransformer
pow_trans = ____

# Train the transform on the data
____

# Apply the power transform to the data
so_numeric_df['ConvertedSalary_LG'] = ____(so_numeric_df[['ConvertedSalary']])

# Plot the data before and after the transformation
so_numeric_df[['ConvertedSalary', 'ConvertedSalary_LG']].hist()
plt.show()
コードを編集して実行