web-dev-qa-db-ja.com

Python OPTICS(クラスタリング)アルゴリズムの実装

Pythonの [〜#〜] optics [〜#〜] アルゴリズムの適切な実装を探しています。これを使用して、密度ベースの点のクラスター((x、y)のペア)を形成します。

(x、y)ペアを取り、クラスターのリストを出力するものを探しています。リストの各クラスターには、そのクラスターに属する(x、y)ペアのリストが含まれています。

32

EDIT:以下は、OPTICSの完全な実装であることが知られていない

クイック検索を行ったところ、次の( Optics )が見つかりました。私はその品質を保証することはできませんが、アルゴリズムはかなりシンプルに見えるので、すぐに検証/適応できるはずです。

以下は、光学アルゴリズムの出力でクラスターを構築する方法の簡単な例です。

def cluster(order, distance, points, threshold):
    ''' Given the output of the options algorithm,
    compute the clusters:

    @param order The order of the points
    @param distance The relative distances of the points
    @param points The actual points
    @param threshold The threshold value to cluster on
    @returns A list of cluster groups
    '''
    clusters = [[]]
    points   = sorted(Zip(order, distance, points))
    splits   = ((v > threshold, p) for i,v,p in points)
    for iscluster, point in splits: 
        if iscluster: clusters[-1].append(point)
        Elif len(clusters[-1]) > 0: clusters.append([])
    return clusters

    rd, cd, order = optics(points, 4)
    print cluster(order, rd, points, 38.0)
7
Bashwork

私はcompleteと正確なpython OPTICSの実装)を認識していません。ここに投稿されたリンクは、大まかな近似のようですOPTICSのアイデアの1つです。また、アクセラレーションにインデックスを使用しないため、O(n^2)またはO(n^3)でも実行される可能性があります。

OPTICSには、明白なアイデア以外にも、いくつかの注意が必要な点があります。特に、しきい値処理は、ここに掲載されている絶対しきい値の代わりにrelativeしきい値( "xi")を使用して実行することが提案されています(その時点で結果はDBSCANとほぼ同じです!)。

元のOPTICSペーパーには、アルゴリズムの出力を実際のクラスターに変換するための推奨アプローチが含まれています。

http://www.dbs.informatik.uni-muenchen.de/Publikationen/Papers/OPTICS.pdf

WekaでのOPTICS実装は、本質的にメンテナンスされていないので、不完全です。実際にクラスターを生成するのではなく、クラスターの順序を計算するだけです。このため、データベースの複製が作成されます。これは、実際にはWekaコードではありません。

[〜#〜] elki [〜#〜] in Javaで最初にOPTICSを公開したグループによって利用可能なかなり広範な実装があるようです。この「公式」バージョンに対して他の実装をテストしたい場合があります。

10
Anony-Mousse

現在、ライブラリ pyclustering が存在します。これには、PythonおよびOPTICSのC++実装が含まれています)。

6
Thomas

技術的にはOPTICSではありませんが、python https://github.com/lmcinnes/hdbscan で利用可能)のHDBSCAN *実装があります。これは、無限のOPTICSと同等です最大イプシロン、および別のクラスター抽出方法実装は生成されたクラスター階層へのアクセスを提供するため、必要に応じて、より伝統的なOPTICSメソッドを介してそこからクラスターを抽出できます。

イプシロンパラメータを制限しないにもかかわらず、この実装は、kdツリーとボールツリーベースの最小スパニングツリーアルゴリズムを使用してO(n log(n))パフォーマンスを実現します そして非常に大きなデータセットを処理できます

6
Leland McInnes

現在、sklearn(Python用のクラスタリングおよびマシン学習モジュール)の開発バージョン(scikit-learn v0.21.dev0)に実装されています。

ここにリンクがあります: https://scikit-learn.org/dev/modules/generated/sklearn.cluster.OPTICS.html

1
Veronika R.

空間充填曲線または空間インデックスを確認したいとします。 sfcは、2dの複雑さを1dの複雑さに減らします。 Nickのヒルベルト曲線四分木空間インデックスブログをご覧ください。私のsfcの実装をphpclasses.org(hilbert-curve)からダウンロードしたいとします。

1
Gigamegs

http://www.chemometria.us.edu.pl/index.php?goto=downloads の「密度ベースのクラスタリングアプローチ」を参照してください

1
vartec