対数変換
前の演習ではデータを線形にスケーリングしましたが、これはデータの形状には影響しません。データが正規分布(もしくはそれに近い分布)している場合には非常に有効で、多くのMachine Learningモデルがこの仮定を置きます。たとえば集団の身長や体重のように、正規性に近いデータを扱うこともあります。一方で、現実世界の多くの変数はこのパターンに従いません。たとえば賃金や集団の年齢などです。この演習では、so_numeric_df の ConvertedSalary 列に対してログ変換を行います。この列は小さな値の近くに多くのデータが集中している一方で、非常に大きな値も含みます。このような分布は右裾が長い(ロングテール)と言われます。
この演習はコースの一部です
Python で学ぶ Machine Learning のための特徴量エンジニアリング
演習の手順
sklearnのpreprocessingモジュールからPowerTransformerをインポートします。PowerTransformer()をpow_transとしてインスタンス化します。so_numeric_dfのConvertedSalary列に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()