始める無料で始める

統計的外れ値の除去

データの上位 N% を取り除く方法は、明らかにおかしな点を除去するのに有用ですが、データが正しくても常に同じ割合の点を削除してしまう欠点があります。よく使われる代替手法として、平均から標準偏差の3倍よりも遠いデータを除去する方法があります。これを実装するには、まず対象列の平均と標準偏差を計算して上下のしきい値を求め、そのしきい値をマスクとして DataFrame に適用します。この方法なら、他と本質的に異なるデータだけを除外でき、データが互いに近い場合は削除される点が少なくなります。

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

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

コースを見る

演習の手順

  • so_numeric_dfConvertedSalary 列の標準偏差と平均を計算します。
  • 平均から両方向に標準偏差の3倍離れた位置を、上限・下限のしきい値として計算します。
  • lowerupper の範囲内に ConvertedSalary がある行だけを残すように、so_numeric_df DataFrame を絞り込みます。

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

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

# Find the mean and standard dev
std = so_numeric_df['ConvertedSalary'].____
mean = so_numeric_df['ConvertedSalary'].____

# Calculate the cutoff
cut_off = std * 3
lower, upper = mean - cut_off, ____

# Trim the outliers
trimmed_df = so_numeric_df[(so_numeric_df['ConvertedSalary'] < ____) \ 
                           & (so_numeric_df['ConvertedSalary'] > ____)]

# The trimmed box plot
trimmed_df[['ConvertedSalary']].boxplot()
plt.show()
コードを編集して実行