KernelPerceptronClassifier
mutable struct KernelPerceptronClassifier <: MLJModelInterface.Probabilistic
The kernel perceptron algorithm using one-vs-one for multiclass, from the Beta Machine Learning Toolkit (BetaML).
Hyperparameters:
kernel::Function
: Kernel function to employ. See?radial_kernel
or?polynomial_kernel
(once loaded the BetaML package) for details or check?BetaML.Utils
to verify if other kernels are defined (you can alsways define your own kernel) [def:radial_kernel
]epochs::Int64
: Maximum number of epochs, i.e. passages trough the whole training sample [def:100
]initial_errors::Union{Nothing, Vector{Vector{Int64}}}
: Initial distribution of the number of errors errors [def:nothing
, i.e. zeros]. If provided, this should be a nModels-lenght vector of nRecords integer values vectors , where nModels is computed as(n_classes * (n_classes - 1)) / 2
shuffle::Bool
: Whether to randomly shuffle the data at each iteration (epoch) [def:true
]rng::Random.AbstractRNG
: A Random Number Generator to be used in stochastic parts of the code [deafult:Random.GLOBAL_RNG
]
Example:
julia> using MLJ
julia> X, y = @load_iris;
julia> modelType = @load KernelPerceptronClassifier pkg = "BetaML"
[ Info: For silent loading, specify `verbosity=0`.
import BetaML ✔
BetaML.Perceptron.KernelPerceptronClassifier
julia> model = modelType()
KernelPerceptronClassifier(
kernel = BetaML.Utils.radial_kernel,
epochs = 100,
initial_errors = nothing,
shuffle = true,
rng = Random._GLOBAL_RNG())
julia> mach = machine(model, X, y);
julia> fit!(mach);
julia> est_classes = predict(mach, X)
150-element CategoricalDistributions.UnivariateFiniteVector{Multiclass{3}, String, UInt8, Float64}:
UnivariateFinite{Multiclass{3}}(setosa=>0.665, versicolor=>0.245, virginica=>0.09)
UnivariateFinite{Multiclass{3}}(setosa=>0.665, versicolor=>0.245, virginica=>0.09)
⋮
UnivariateFinite{Multiclass{3}}(setosa=>0.09, versicolor=>0.245, virginica=>0.665)
UnivariateFinite{Multiclass{3}}(setosa=>0.09, versicolor=>0.665, virginica=>0.245)