0

SOがこれを尋ねるのに適切な場所であるかどうかはわかりません.そうでない場合は、質問を削除して他の場所で試してみます. 私は次のことをしようとしていると言いました:

ここに画像の説明を入力

私は、List<double>値が非常に近い値 (この例では 0.75 など) にある値のブロックを、置換された値の平均を表す単一の値に置き換えたいと考えています。孤立した、または単独の値は変更しないでください。また、置換されるブロックは 5 より長くすることはできません。

0、5、10 の各間隔の平均値を計算しても、期待した結果は得られません。

LINQ のパワーに喜んで驚かされることが何度もありました。誰かがこの小さなメソッドの作成をガイドしてくれたら嬉しいです。

私が考えたのは、最初にそれぞれの値に最も近い値を見つけ、距離を計算し、距離が最小値 (この例では 0.75) より小さい場合は、それらの値を同じブロックに割り当てることです。

すべての値がブロックに割り当てられると、各ブロック (1 つまたは複数の値) をその平均値に置き換える 2 番目のループが実行されます。

このアプローチで私が抱えている問題は、「ブロック」を割り当てることです。複数の値が一緒にある場合、評価値が別のブロックに含まれているかどうかを確認する必要があり、そうであれば、新しい値もそのブロックにある必要があります. これがこれを行う正しい方法なのか、それとも複雑にしすぎているのかはわかりません。

編集: 期待される結果: ここに画像の説明を入力

2 つの軸が 1 つだけ使用されていることがわかりますが、List は 1D です。X 軸だけを描画する必要がありました。

表現される線の長さは関係ありません。値が配置されている軸をマークするだけです。

4

1 に答える 1

0

MSDN は既にこれを行っており、コード付きの詳細なサンプル アプリケーションを提供していることがわかりました。

データ クラスタリング - k-Means クラスタリングを使用した異常データの検出

于 2013-08-27T16:50:57.443 に答える