Python içinde Clustering ile Nasıl Çalışılır

Python içinde Clustering ile Nasıl Çalışılır

Aspose.PDF FOSS for Python, tek bir PDF işlemiyle ilişkili olmayan, ilgili DataPoint nesnelerini Cluster örneklerine gruplamak ve bir kümenin merkezini hesaplamak için küçük, genel amaçlı bir hiyerarşik birleşik kümeleme yardımcı programı içerir — her veri noktasının neyi temsil ettiğine siz karar verirsiniz ve koordinatlarını kendiniz sağlarsınız; yardımcı program bunları otomatik olarak doldurmaz. Kütüphane aşağıdaki komutla kurulur.

Adım Adım Kılavuz

Adım 1: Paketi Kurun

Aspose.PDF FOSS paketini kurun:

git clone https://github.com/aspose-pdf-foss/Aspose-PDF-FOSS-for-Python.git
cd Aspose-PDF-FOSS-for-Python
pip install -e .

Kurulumu, Cluster içe aktararak ve bir onay mesajı yazdırarak doğrulayın:

from aspose_pdf import Cluster
print("aspose-pdf-foss-for-python is ready.")

Adım 2: Gerekli Sınıfları İçe Aktar

Kümeleme yardımcı aracını oluşturan üç sınıfı içe aktar:

from aspose_pdf import Cluster, ClusterCollection, DataPoint

Adım 3: Veri Noktaları Oluştur

Bir DataPoint, bir name dizesini value float listesiyle eşleştirir — kendi gruplama mantığınız için anlamlı olduğunu düşündüğünüz koordinatlar veya özellik vektörü:

from aspose_pdf import DataPoint

point_a = DataPoint("item-1", [12.0, 45.0])
point_b = DataPoint("item-2", [13.5, 44.0])
point_c = DataPoint("item-3", [98.0, 5.0])

print(point_a.name, point_a.value)

DataPoint, value‘i belirli bir PDF kavramına bağlamaz — sayfa koordinatları, yazı tipi metrikleri veya başka herhangi bir sayısal özellik vektörü aynı derecede işe yarar.


Adım 4: Veri Noktalarını Bir Küme İçine Grupla

Tam üyelik listesini Cluster yapıcıya iletin. Oluşturulduktan sonra bir Cluster‘e öğe eklemek için bir yöntem yoktur, bu yüzden önce üyeliği belirleyin:

from aspose_pdf import Cluster

nearby = Cluster([point_a, point_b])
print(nearby.count)              # 2
print(nearby.contains(point_a))  # True

contains(), eşitlik üzerinden eşleşir — DataPoint, name ve value birlikte eşitliği tanımlar, bu yüzden aynı ada ve değere sahip farklı bir DataPoint örneği de içerildiği rapor edilir.


Adım 5: Küme Merkezini Hesapla

DataPoint.get_centroid(cluster) bir statik metottur ve kümedeki her DataPoint.value‘in her boyutunu ortalar ve sonucu "centroid" adlı yeni bir DataPoint olarak döndürür:

from aspose_pdf import DataPoint

centroid = DataPoint.get_centroid(nearby)
print(centroid.name)   # "centroid"
print(centroid.value)  # per-dimension average across the cluster

Kümedeki her DataPoint.value listesinin aynı uzunlukta olması gerekir — get_centroid, konum konum ortalama yapar ve uzunlukların eşleştiğini doğrulamaz. Cluster.empty() üzerinde veya count == 0 içeren herhangi bir kümede çağrıldığında ValueError hatası yükseltilir.


Adım 6: Bir Küme Kopyala veya Paylaşılan Boş Örneği Yeniden Kullan

clone(), aynı öğeleri tutan bağımsız bir Cluster döndürür; Cluster.empty() ise her zaman yeni bir tane ayırmak yerine aynı önbelleğe alınmış empty-cluster örneğini döndürür:

from aspose_pdf import Cluster

backup = nearby.clone()
print(backup is nearby)          # False -- independent copy
print(backup.contains(point_a))  # True -- same items

placeholder = Cluster.empty()
print(placeholder.count)         # 0

Adım 7: Birden Çok Küme’yi ClusterCollection içinde Gruplandır

ClusterCollection, birkaç Cluster nesnesini tek bir len()-farkında konteynerin arkasına paketler:

from aspose_pdf import Cluster, ClusterCollection

outliers = Cluster([point_c])
collection = ClusterCollection([nearby, outliers])
print(len(collection))  # 2

ClusterCollection, kümelerini geri almak için bir yöntem sunmaz — ardından kümeleri yinelemek ihtiyacınız olursa, yapıcıya gönderdiğiniz listenin bir referansını saklayın.

Yaygın Sorunlar ve Çözümler

Mevcut bir öğeye bir öğe eklemenin bir yöntemi yok Cluster

Cluster yalnızca üyelik listesini oluşturma zamanında (Cluster(items)) kabul eder. Önce DataPoint nesnelerinin tam listesini oluşturun, ardından Cluster‘ı oluşturun — daha sonra çağıracak bir add() veya append() yoktur.

DataPoint.get_centroid() raises ValueError

Bu, verilen küme boş olduğunda (count == 0), Cluster.empty() dahil, gerçekleşir. cluster.count‘yi get_centroid‘i çağırmadan önce kontrol edin, ya da iş akışınızda boş bir küme geçerli bir girdi ise istisnayı yakalayın.

Merkez değerleri yanlış görünüyor

get_centroid, her DataPoint.value konumunu konumuna toplar ve nokta sayısına böler — kümedeki her value listesinin aynı uzunlukta olduğunu kontrol etmez. Uyumsuz boyutlardaki DataPoint nesnelerini karıştırmak, hatalı bir ortalama üretir ve hata fırlatmaz.

Expecting Cluster.empty() her seferinde yeni boş bir küme oluşturmak için

Cluster.empty() bir singleton erişicisidir — her çağrı aynı önbelleğe alınmış örneği döndürür. Ayrı, bağımsız bir boş küme gerekiyorsa, Cluster()‘i (argümansız) kullanın.

Kütüphanenin noktaları otomatik olarak gruplamasını bekliyor

DataPoint, Cluster ve ClusterCollection, noktaları, kümeleri ve bir centroid hesabını temsil eden veri yapılarıdır — modül, noktaların birlikte olup olmadığını belirleyen bir bağlantı veya mesafe işlevi içermez. Kendi kodunuz, bir Cluster oluşturulmadan önce küme üyeliğini belirler.

Sıkça Sorulan Sorular

Bu modül verileri mesafeye göre otomatik olarak gruplar mı?

Hayır. Cluster, DataPoint ve ClusterCollection, önceden belirlenmiş gruplamaları temsil etmek ve bir centroid hesaplamak için yapı taşlarıdır — yerleşik bir birleşim veya mesafeye dayalı atama adımı yoktur.

Cluster() ile Cluster.empty() arasındaki fark nedir?

Cluster(items=None) her çağrıldığında yeni bir örnek oluşturur. Cluster.empty() ise her çağrıda aynı önbelleğe alınmış, paylaşılan boş küme örneğini döndüren bir sınıf yöntemidir.

Bir Cluster oluştuktan sonra öğeler ekleyebilir miyim?

Hayır. Cluster yalnızca contains(), clone() ve count özelliğini oluşturmanın ötesinde ortaya çıkarır — üyelik, yapıcı çalıştıktan sonra sabitlenir.

get_centroid() herhangi bir sayıda boyutla çalışır mı?

Evet, kümedeki her DataPoint.value listesinin aynı uzunlukta olduğu sürece. get_centroid, her boyutu bağımsız olarak ortalar ve sonucu yeni bir DataPoint olarak döndürür.

ClusterCollection, düz bir Python küme listesinin ötesinde ne ekler?

Temelde len() desteği olan tiplenmiş bir kapsayıcıdır. Oluşturduğunuz listede zaten bulunanın ötesinde yineleme, arama veya birleştirme davranışı eklemez.

Ayrıca Bakınız

 Türkçe