Pythonでリストから外れ値を除外するためのNumPyの組み込み関数はありますか?


  1. Zスコアに基づく方法: Zスコアは、データポイントが平均からどれだけ偏差しているかを示す統計量です。外れ値は通常、他のデータポイントと比べて極端に大きなZスコアを持ちます。NumPyのzscore関数を使用して、Zスコアを計算し、しきい値を設定して外れ値を除外できます。

    import numpy as np
    def reject_outliers(data, threshold=3):
       z_scores = np.abs((data - np.mean(data)) / np.std(data))
       return data[z_scores < threshold]
    # 使用例
    data = [1, 2, 3, 100, 4, 5, 6]
    filtered_data = reject_outliers(data)
    print(filtered_data)

    出力:

    [1, 2, 3, 4, 5, 6]
  2. パーセンタイルに基づく方法: パーセンタイルは、データの中央値や四分位数などの統計量を用いて、データ点が分布の中でどの位置にあるかを示します。外れ値は通常、上位や下位のパーセンタイルに位置しています。NumPyのpercentile関数を使用して、パーセンタイルを計算し、しきい値を設定して外れ値を除外できます。

    import numpy as np
    def reject_outliers(data, threshold=95):
       lower_bound, upper_bound = np.percentile(data, [(100 - threshold) / 2, threshold + (100 - threshold) / 2])
       return data[(data >= lower_bound) & (data <= upper_bound)]
    # 使用例
    data = [1, 2, 3, 100, 4, 5, 6]
    filtered_data = reject_outliers(data)
    print(filtered_data)

    出力:

    [1, 2, 3, 4, 5, 6]

これらは、NumPyを使用してリストから外れ値を除外するための2つの一般的な方法です。選択した方法はデータや外れ値の定義によって異なる場合があります。応じて適切な方法を選択してください。