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"))
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).
• Leitfaden zur Familie shape_statistics
• 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.
• shapestat_landmark_tour — py -3.11 examples/shapestat_landmark_tour.py
shapemodel als Eingabe)shape_project · shape_reconstruct · shape_mahalanobis · shape_explained_variance · shape_synthesize
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.