2017-08-10 14 views
0

私はページ上の関心領域を見つけるためのPythonプログラムを書いています。興味のあるすべての値のページ上の位置は私に与えられますが、いくつかの値(通常は1つまたは2つだけ)は他から離れており、これらを削除したいと思います。データセットは100データポイント未満の巨大ではありませんが、何度もこれを行う必要があります。2次元データの異常値を取り除くアプローチ

私は第1象限の2つの軸(xとy)にデカルト座標系を持っているので、正の値だけです。

私のデータポイントは、この座標系上に描かれたボックスを表します。これは、タプル内の2つの座標ペアのセットとして保存されています。すべての直線が直線であるため、ボックスは2つの座標ペアで描画できます。例:(8,2,15,10)は、インデックス(x、y)=(8,2)、(8,10)、(15,10)、(15,2)のボックスを描画します。

私はこのセットの外れ値を削除しようとしていますが、良い方法を見つけようとするのは苦労しています。私は、IQRを見つけ、これらの基準を満たすすべてのポイントを削除することによって、外れ値の除去について考えている:

Q1 - 1.5 * IQRや

Q3 + 1.5 * IQR

は、ここでの問題は、私はということです値は座標だけではなく、もしあなたがそうするならば、どのようにして計算するのか苦労しています。しかし、それらは重なり合っているので、ヒストグラムにもうまく収まりません。

最初に、ボックス全体の値全体にポイントを追加すると思っていました。この場合、サンプルボックスは56ポイントを作成します。あたかもこの解決策がかなり悪いようです。誰にも代替ソリューションがありますか?

+0

あなたが分離フォレストを見たことがありますか?あなたはscikit-learnをチェックすることができます:http://scikit-learn.org/stable/modules/outlier_detection.html – Y0da

+0

@ Y0daこの特定の方法ではありませんが、以前は他の機械学習アプローチを見てきました。データは、私が好きだったので、トレーニングセットなどを分離して作成するのが容易ではないので、MLを含まないソリューションを考え出すことができれば好ましいでしょう。 – Victoria

+0

MLを必要としない場合は、自分でしきい値を修正する必要があります。だから、ノルムを使うことができます。 'scipy.spatial.distance.cdist'を参照してください。https://docs.scipy.org/doc/scipy/reference/generated/scipy.spatial.distance.cdist.html – Y0da

答えて

0

主に2つの方法があります。しきい値を固定するか、機械学習によって推論されるかのどちらかです。

機械学習では、Isolation Forestを使用できます。

MLを必要としない場合は、自分でしきい値を修正する必要があります。だから、ノルムを使うことができます。 no.linalg.norm(p1 - p2)がありますか、メトリックの詳細に制御したい場合はcdistがあります:

scipy.spatial.distance.cdist(p1, p2) 
関連する問題