PerceptronClassifier
mutable struct PerceptronClassifier <: MLJModelInterface.Probabilistic
The classical perceptron algorithm using one-vs-all for multiclass, from the Beta Machine Learning Toolkit (BetaML).
Hyperparameters:
initial_coefficients::Union{Nothing, Matrix{Float64}}
: N-classes by D-dimensions matrix of initial linear coefficients [def:nothing
, i.e. zeros]initial_constant::Union{Nothing, Vector{Float64}}
: N-classes vector of initial contant terms [def:nothing
, i.e. zeros]epochs::Int64
: Maximum number of epochs, i.e. passages trough the whole training sample [def:1000
]shuffle::Bool
: Whether to randomly shuffle the data at each iteration (epoch) [def:true
]force_origin::Bool
: Whether to force the parameter associated with the constant term to remain zero [def:false
]return_mean_hyperplane::Bool
: Whether to return the average hyperplane coefficients instead of the final ones [def:false
]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 PerceptronClassifier pkg = "BetaML"
[ Info: For silent loading, specify `verbosity=0`.
import BetaML ✔
BetaML.Perceptron.PerceptronClassifier
julia> model = modelType()
PerceptronClassifier(
initial_coefficients = nothing,
initial_constant = nothing,
epochs = 1000,
shuffle = true,
force_origin = false,
return_mean_hyperplane = false,
rng = Random._GLOBAL_RNG())
julia> mach = machine(model, X, y);
julia> fit!(mach);
[ Info: Training machine(PerceptronClassifier(initial_coefficients = nothing, …), …).
*** Avg. error after epoch 2 : 0.0 (all elements of the set has been correctly classified)
julia> est_classes = predict(mach, X)
150-element CategoricalDistributions.UnivariateFiniteVector{Multiclass{3}, String, UInt8, Float64}:
UnivariateFinite{Multiclass{3}}(setosa=>1.0, versicolor=>2.53e-34, virginica=>0.0)
UnivariateFinite{Multiclass{3}}(setosa=>1.0, versicolor=>1.27e-18, virginica=>1.86e-310)
⋮
UnivariateFinite{Multiclass{3}}(setosa=>2.77e-57, versicolor=>1.1099999999999999e-82, virginica=>1.0)
UnivariateFinite{Multiclass{3}}(setosa=>3.09e-22, versicolor=>4.03e-25, virginica=>1.0)