PolyPipeline¶
The PolyPipeline class supports mixed multiview/single-view workflows with runtime mode inference. It can run sklearn-style estimators per view in multiview mode and supports late-fusion chaining.
See also¶
- class polyview.pipeline.polypipeline.PolyPipeline(*args: Any, **kwargs: Any)¶
Bases:
_BaseCompositionPipeline that supports both multiview and single-view flows.
The pipeline infers data mode at runtime from step outputs: - multiview (“mv”): list/tuple of 2-D arrays - single-view (“sv”): one 2-D array
Allowed transitions are: - mv -> mv - mv -> sv - sv -> mv - sv -> sv
A reverse transition (sv -> mv) is rejected.
- Parameters:
steps (sequence of (str, estimator) tuples) – List of (name, transform) tuples that are chained in the pipeline order.
per_view_step_params (dict or None, default=None) – Optional per-view hyperparameters for specific steps.
name (str or None, default=None) – Display name for the pipeline, shown in diagrams. If None, defaults to “PolyPipeline flow”.
- draw(start_mode: Literal['mv', 'sv'] | None = None, *, ax: Any = None, show: bool = True, mode_colors: Dict[str, str] | None = None, title: str | None = None, node_text_color: str = 'white', node_border_color: str = '#1A1A1A', edge_color: str = '#333333', transition_text_color: str = '#222222', show_legend: bool = True, show_title: bool = True) Any¶
Draw a mode-aware pipeline diagram using NetworkX.
- Parameters:
start_mode ({"mv", "sv"} or None, default=None) – Optional starting mode for preview. Useful before fitting. -
None: use fitted input mode if available. -"mv"/"sv": simulate flow from that start mode.ax (matplotlib.axes.Axes or None, default=None) – Matplotlib axis to draw onto. If None, a new figure is created.
show (bool, default=True) – Whether to call
matplotlib.pyplot.show()after drawing.node_size (int, default=2300) – Minimum size hint for node rectangles.
mode_colors (dict or None, default=None) – Optional color overrides for node modes and types. Supported keys are
"mv","sv","lf","labels"(clustering/classification steps),"output", and"default".title (str or None, default=None) – Plot title. If None, uses the pipeline’s name attribute.
node_text_color (str, default="white") – Color of node labels.
node_border_color (str, default="#1A1A1A") – Stroke color for node borders.
edge_color (str, default="#333333") – Arrow color.
transition_text_color (str, default="#222222") – Color of edge transition labels.
show_legend (bool, default=True) – Whether to display a legend showing color meanings (MV/SV/LF modes and label output).
show_title (bool, default=True) – Whether to display the plot title.
- Returns:
Directed graph with mode and transition metadata.
- Return type:
networkx.DiGraph
- fit(X: Any, y: Any = None) PolyPipeline¶
- fit_predict(X: Any, y: Any = None) Any¶
- fit_transform(X: Any, y: Any = None) Any¶
- get_params(deep: bool = True) Dict[str, Any]¶
Get parameters, including those of the steps when
deep=True.Step parameters are exposed as
<step>__<parameter>, as insklearn.pipeline.Pipeline, so that the pipeline can be tuned withGridSearchCV.
- property named_steps: Dict[str, Any]¶
Unfitted steps as a
{name: estimator}dictionary.
- predict(X: Any) Any¶
- print(start_mode: Literal['mv', 'sv'] | None = None) str¶
Render a readable ASCII diagram of pipeline flow.
- Parameters:
start_mode ({"mv", "sv"} or None, default=None) – Optional starting mode for preview. Useful before fitting. -
None: use fitted input mode if available. -"mv"/"sv": simulate flow from that start mode.- Returns:
Multi-line diagram string (also printed).
- Return type:
str
Examples
>>> from sklearn.preprocessing import StandardScaler >>> from polyview.augmentation.random_projections import ( ... RandomProjectionViews, ... ) >>> from polyview.cluster.mv_kmeans import MultiViewKMeans >>> pipe = PolyPipeline([ ... ("rp", RandomProjectionViews(n_views=3)), ... ("scale", StandardScaler()), ... ("cluster", MultiViewKMeans(n_clusters=3, random_state=0)) ... ]) >>> diagram = pipe.print(start_mode='sv') PolyPipeline flow input ↓ (split 1 -> 3 branches) [rp: RandomProjectionViews] ↓ ↓ ↓ (3 parallel branches) [scale: StandardScaler] ↓ ↓ ↓ (merge 3 -> 1) [cluster: MultiViewKMeans] ↓ (output) output
- score(X: Any, y: Any = None) Any¶
- set_params(**kwargs: Any) PolyPipeline¶
Set parameters, including
<step>__<parameter>and whole steps.
- transform(X: Any) Any¶