# `Latu.ML.Transformer`
[🔗](https://github.com/zero-one-group/latu_ml/blob/v0.4.2/lib/latu/ml/transformer.ex#L1)

A transformer that needs no fitting — `VectorAssembler` and its kind.

`Latu.ML.transform/2` applies one, and because a `Transform` is a relation and not a command,
applying it reaches no server: the frame it hands back is lazy like any other.

# `t`

```elixir
@type t() :: %Latu.ML.Transformer{
  class: String.t(),
  known: [Latu.ML.Param.t()],
  params: [Latu.ML.Plan.param()],
  uid: String.t()
}
```

# `new`

```elixir
@spec new(String.t(), keyword()) :: t()
```

A transformer the registry does not know, by its JVM class name.

See `Latu.ML.Estimator.new/2`; the same caveats apply.

## Options

  * `:params` — the params to send, already in wire form. Defaults to `[]`.
  * `:uid` — the uid to send. Defaults to a generated one in PySpark's shape.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
