データポイントのクラスタリング

データポイントのクラスタリング

データポイントのクラスタリング

DataPoint、Cluster、およびClusterCollectionは、Aspose.PDF FOSSに同梱された小規模で汎用的な階層的凝集クラスタリングツールキットです。Python 用です。これらは汎用的なデータグルーピングのプリミティブ――座標とラベルを持つポイント、アイテムのグループ、グループのコレクション――であり、PDF 固有のドキュメント機能ではありません。このモジュール自体は PDF コンテンツの読み書きを行いません。数値データ(例:ドキュメントから抽出した測定値)をクラスタにグループ化し、クラスタの重心で要約する必要がある場合に使用してください。


データポイントの表現

DataPointは、識別子となるnameと数値座標のvalueリストをペアにします。両方は構築後、DataPoint.nameおよびDataPoint.valueとして公開されます。


クラスタの構築とコピー

Clusterは、任意のアイテムリストを単一のグループにラップします。Cluster.countはクラスタが現在保持しているアイテム数を返し、Cluster.contains()は指定されたアイテムがメンバーかどうかをチェックし、Cluster.clone()は独自のアイテムリストを持つ独立したコピーを返します。Cluster.empty()は、呼び出しごとに新しいインスタンスを割り当てるのではなく、共有されたシングルトンの空クラスタインスタンスを返します。


コレクション内でのクラスタのグルーピング

ClusterCollection はオプションの Cluster インスタンスのリストを単一のコレクションにラップし、関数が同時に複数のクラスターを受け取ったり返したりする必要があるときに、渡すオブジェクトを 1 つ提供します。


クラスタ重心の計算

DataPoint.get_centroid() は Cluster 内のすべてのデータポイントの座標を位置ごとに平均し、重心を表す新しい DataPoint を返します。平均が意味を持つためには、クラスター内のすべてのポイントが DataPoint.value で同じ次元数を持っている必要があります。


ヒントとベストプラクティス

  • クラスター内のすべての DataPoint.value リストは同じ長さに保ってください — DataPoint.get_centroid() は座標を位置ごとに平均するため、次元が合わないと誤った重心が生成されます。
  • プレースホルダー値が必要なときに新しい空クラスターを作成する代わりに、共有のシングルトン空クラスターとして Cluster.empty() を使用してください。
  • 他の場所で元のクラスターがまだ必要な場合にクラスターを変更する前に Cluster.clone() を呼び出してください — クローンはアイテムリストをコピーし、エイリアスにはしません。
  • 関数が複数の Cluster を単一の値として受け取ったり返したりする必要があるときは、ClusterCollection を使用してください。
  • これらのクラスは汎用ユーティリティであり、PDF パーシング機能ではありません — ドキュメントデータから DataPoint 値を生成する独自のロジックと組み合わせて使用してください。

一般的な問題

問題原因修正
DataPoint.get_centroid() は予期しない数の値を持つ重心を生成しますクラスタ内のデータポイントは、長さが異なる DataPoint.value リストを持っていますすべての DataPoint が Cluster に追加される際に、同じ次元数であることを確認してください
Cluster.contains() は、存在すると期待する値に対して False を返しますメンバーシップは保存されたアイテムオブジェクトと直接比較されるため、同じ名前と値を持つ別々に作成された DataPoint インスタンス2つは、同一性ベースの検索で自動的に等しいとみなされません同じ DataPoint インスタンスを再利用するか、メンバーシップを仮定する前に DataPoint.name と DataPoint.value で比較してください
クローンしたクラスターを変更すると、元のクラスターも変更されますCluster.clone() がスキップされ、コピーされる代わりに同じ Cluster 参照が共有されました呼び出し元が独立したコピーを必要とする場合は、必ず最初に Cluster.clone() を呼び出してください

FAQ

Cluster と ClusterCollection の違いは何ですか?

Cluster は、通常 DataPoint インスタンスである項目のリストを保持し、1 つのグループに属します。ClusterCollection は Cluster オブジェクトのリストを保持します:個々のデータポイントではなく、クラスタをまとめるためのものです。

DataPoint.get_centroid() は、与えられたクラスタを変更しますか?

いいえ。提供された Cluster にすでに含まれる項目を読み取り、セントロイド用の新しい DataPoint を返します。元のクラスタとその項目は変更されません。

このクラスタリング機能は PDF コンテンツに特化していますか?

No. DataPoint、Cluster、およびClusterCollectionは、aspose_pdfパッケージに同梱されている汎用的な数値クラスタリングプリミティブです。これらはページやテキスト、その他のPDF構造を自ら読み取ることはなく、あくまであなたが構築した値に対してのみ動作します。

なぜ Cluster.empty() は毎回同じインスタンスを返すのですか?

Cluster.empty() は共有シングルトンを返すため、“no cluster” の呼び出しを繰り返しても毎回新しいオブジェクトが割り当てられません。


API Reference 概要

クラス/メソッド説明
DataPoint数値座標のリストを保持する名前付きポイント
DataPoint.name点の識別名
DataPoint.value点の数値座標リスト
DataPoint.get_centroid()クラスター内のすべての点の座標を平均化した新しい DataPoint を返します
Cluster通常は DataPoint のインスタンスである項目のグループ
Cluster.empty()共有の空クラスターシングルトンを返します
Cluster.contains()アイテムがクラスターに含まれているか確認します
Cluster.clone()クラスターの独立したコピーを返します
Cluster.count現在クラスター内にあるアイテムの数
ClusterCollectionリストの Cluster インスタンスを 1 つのコレクションにラップします

参照

 日本語