mixle.inference.structure_embedded module

Structure learning over embedded heterogeneous fields.

mixle.inference.learn_bayesian_network() can model flat records containing categorical, count, real, and fixed-length vector fields. This module adapts free-text fields into that workflow by embedding each text value with mixle.represent.fit_embedder() and representing the field as a multivariate vector node.

The learned graph relates the embedding vector to other fields through multivariate conditional-linear-Gaussian factors or by using vector components as parent design features. Representative examples per embedding cluster remain available for interpretation, but the model itself uses the full vector.

class EmbeddedFieldCodec(field, embedder, centroids, representatives)[source]

Bases: object

One text field’s bridge into the graph: embed to a vector; centroids are for interpretability.

Parameters:
vector(value)[source]

Embed one field value as a numeric vector.

Parameters:

value (Any)

Return type:

ndarray

vectors(values)[source]

Embed a sequence of field values as a matrix.

Parameters:

values (Sequence[Any])

Return type:

ndarray

class EmbeddedStructureModel(net, codecs)[source]

Bases: object

A discovered dependency graph over records whose text fields ride in as embedding VECTORS.

Parameters:
  • net (Any)

  • codecs (dict[int, EmbeddedFieldCodec])

encode_record(x)[source]

The record with each text field replaced by its embedding vector.

Parameters:

x (tuple)

Return type:

tuple

encode_records(rows)[source]

Replace configured text fields with embedding vectors for each record.

Parameters:

rows (Sequence[tuple])

Return type:

list[tuple]

edges()[source]

Return discovered graph edges.

Return type:

list[tuple[int, int]]

log_density(x)[source]

Evaluate log density after embedding text fields in one record.

Parameters:

x (tuple)

Return type:

float

seq_log_density(rows)[source]

Evaluate log density for records after embedding text fields.

Parameters:

rows (Sequence[tuple])

Return type:

ndarray

describe()[source]

The discovered structure with per-cluster representative examples for each text field.

Return type:

dict[str, Any]

learn_structure_embedded(data, *, text_fields='auto', n_clusters=8, embed_dim=16, seed=0, max_parents=2, **embed_kw)[source]

Discover cross-field structure where some fields are free text (see module docstring).

Parameters:
  • data (Sequence[tuple]) – flat tuple records; text fields may hold arbitrary strings.

  • text_fields (Sequence[int] | str) – which field indices to embed, or "auto" – every string-valued field with too many distinct values to be a categorical.

  • n_clusters (int) – number of representative clusters surfaced by describe() (interpretability only; the model uses the full embedding vector, not a cluster code).

  • embed_dim (int) – embedding dimension for mixle.represent.fit_embedder() – the vector node’s dim.

  • **embed_kw (Any) – forwarded to fit_embedder (epochs, hidden, feature_dim, …).

  • seed (int)

  • max_parents (int)

  • **embed_kw

Return type:

EmbeddedStructureModel