// Creates iris.anermodel in the current working directory. Use a fresh folder.
// Iris: Fisher (1936), UCI, CC BY 4.0. See THIRD_PARTY_DATA.md.
import aner.dataset
import aner.nn
import aner.ml
import aner.dev

let split = dataset.iris().split(test: 0.2, seed: 2026)
let network = nn.sequential(seed: 42)
    .dense(inputs: 4, outputs: 8).tanh()
    .dense(inputs: 8, outputs: 3)
let pipeline = ml.classifier(network, standardize: true,
                             loss: "cross_entropy", optimizer: "sgd")
let fitted = pipeline.fit(split.train(), epochs: 100, rate: 0.1)
fitted.save("iris.anermodel")
let restored = ml.load_classifier("iris.anermodel")
print(restored.evaluate(split.test()).summary())
// Zero-based Dense layer indices ignore activation stages. These are detached copies.
if dev.enabled() {
    dev.capture("Restored first Dense weights", restored.weights(layer: 0))
    dev.capture("Restored first Dense bias", restored.bias(layer: 0))
}
// New rows use the restored training scaler; the original fitted model is unchanged.
let continued = pipeline.warm_start(restored).fit(split.train(), epochs: 50, rate: 0.1)
print(continued.evaluate(split.test()).summary())
