shape_pca — SHAPESTAT model op

• Datenarten: shapeset → shapemodel

• Aufruf: import fullseye as fs; fs.ledger.shape_pca(shapes, n_components: 'int' = 0, align: 'bool' = True) (die Implementierung direkt: import shapestats; shapestats.shape_pca(shapes, n_components: 'int' = 0, align: 'bool' = True); aus dem Register: opsshapestat.get("shape_pca"))

Verwendung

Form-PCA (statistisches Formmodell). → dict (shapemodel).

Zurückgegebenes dict: mean (N,3) / components (k, N*3) / variance (k,) / n_points / total_variance / aligned (K,N,3).

n_components=0 (Standard) bedeutet alle min(K-1, N*3) Komponenten. Mit align=True wird zuerst generalized_procrustes angewendet (PCA ohne Ausrichtung macht die 1. Hauptkomponente zum "Lageunterschied", und die Formaussage verschwindet).

★ Die Varianz ist die Stichprobenvarianz (geteilt durch K-1). Bei kleinem K fallen die Eigenwerte systematisch zu groß aus. Solange die Zahl der Individuen nicht 2-stellig ist, eher auf die Verhältnisse als auf die Eigenwerte selbst achten.

★★ align=True entfernt auch "Größenunterschiede" und frisst daher die Varianz größenähnlicher Moden. shape_synth_family setzt den 1. Mode als "Streckung/Stauchung entlang der Längsachse" und den 2. als "Biegung", mit einem Gewichtsverhältnis von 0.30 : 0.12, daher ist die Ground Truth des Varianzverhältnisses 6.25. Gemessen (K=40, N=80, seed=7):

========================== ========== ======================

Vorverarb. Var.-Verh. Anteil (1. / 2.)

========================== ========== ======================

align=False 6.981 0.8747 / 0.1253

GPA(scaling=False) 6.981 0.8747 / 0.1253

align=True (Standard) 2.565 0.7188 / 0.2803

========================== ========== ======================

Streckung ähnelt stark einer gleichförmigen Vergrößerung, daher nimmt die Skalenentfernung von Procrustes mehr als die Hälfte davon weg. Kein Fehler, sondern eine Folge der Definition -- wer nicht vorher festlegt, "ob Größe als Merkmal zählt", erhält aus denselben Daten andere Hauptkomponenten. Sollen Wachstum oder Unterschiede im Körperbau zur Formaussage gehören, align=False verwenden (oder erst generalized_procrustes(scaling=False) durchlaufen und dann align=False).

Ausführlicher Anwendungsleitfaden

• Leitfaden zur Familie shape_statistics

Referenzen (Beispieldaten, Literatur)

• Katalog der Beispieldaten (Download-URLs / Lizenzen) — 2-D nutzt skimage.data (BSD/Public Domain) plus synthetische Bilder, 3-D nennt Download-URLs echter Datenquellen (Stanford, PDS, …).

• Herkunft und Literatur der Operatoren — die Quellen der Forschung/Verfahren, auf denen diese Operatorfamilie beruht.

• Der kanonische Algorithmus (Autor, Jahr) und seine Anwendungen stehen im Familienleitfaden oben.

Ausführbare Beispiele (verifizierte Samples, die diesen Operator wirklich aufrufen)

• shapestat_landmark_tour — py -3.11 examples/shapestat_landmark_tour.py

Typkompatible Folge-Operatoren (nehmen shapemodel als Eingabe)

shape_project · shape_reconstruct · shape_mahalanobis · shape_explained_variance · shape_synthesize

Gleiche Kategorie (model)

shape_project · shape_reconstruct · shape_mahalanobis · shape_explained_variance · shape_synthesize


*Provenance: shapestats.py — SHAPESTAT Operator-Registry. Diese Notiz wird von tools/opdocs.py md erzeugt (nicht von Hand bearbeiten).*

© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.