API

Index

Functions

Maxnet.default_featuresMethod
default_features(np)

Takes the number of presences np and returns a Vector of AbstractFeatureClasss that are used my maxent as default.

If np is less than ten, then only LinearFeature and CategoricalFeature are used. If it is at least 10, then QuadraticFeature is additionally used. If it is at least 15, then HingeFeature is additionally used. If it is at least 80, then ProductFeature is additionally used.

source
Maxnet.maxnetMethod
maxnet(
    p_a, X; 
    features, regularization_multiplier, regularization_function,
    addsamplestobackground, weight_factor, 
    kw...
)

Fit a model using the maxnet algorithm.

Arguments

  • p_a: A BitVector where presences are true and background samples are false
  • X: A Tables.jl-compatible table of predictors. Categorical predictors should be CategoricalVectors

Keywords

  • features: Either a Vector of AbstractFeatureClass to be used in the model, or a String where "l" = linear and categorical, "q" = quadratic, "p" = product, "t" = threshold, "h" = hinge (e.g. "lqh"); or By default, the features are based on the number of presences are used. See default_features
  • regularization_multiplier: A constant to adjust regularization, where a higher regularization_multiplier results in a higher penalization for features and therefore less overfitting.
  • regularization_function: A function to compute a regularization for each feature. A default regularization_function is built in and should be used in most cases.
  • addsamplestobackground: Whether to add presence values to the background. Defaults to true.
  • n_knots: the number of knots used for Threshold and Hinge features. Defaults to 50. Ignored if there are neither Threshold nor Hinge features
  • weight_factor: A Float64 value to adjust the weight of the background samples. Defaults to 100.0.
  • kw...: Further arguments to be passed to GLMNet.glmnet

Returns

  • model: A model of type MaxnetModel

Examples

using Maxnet
p_a, env = Maxnet.bradypus();
bradypus_model = maxnet(p_a, env; features = "lq")

# Output
Fit Maxnet model
Features classes: Maxnet.AbstractFeatureClass[LinearFeature(), CategoricalFeature(), QuadraticFeature()]
Entropy: 6.114650341746531
Model complexity: 21
Variables selected: [:frs6190_ann, :h_dem, :pre6190_l1, :pre6190_l10, :pre6190_l4, :pre6190_l7, :tmn6190_ann, :vap6190_ann, :ecoreg, :cld6190_ann, :dtr6190_ann, :tmx6190_ann]
source
StatsAPI.predictMethod
predict(m, X; link, clamp)

Use a maxnet model to predict on new data.

Arguments

  • m: a MaxnetModel as returned by maxnet
  • X: a Tables.jl-compatible table of predictors. All columns that were used to fit m should be present in X

Keywords

  • link: the link function used. Defaults to CloglogLink(), which is the default on the Maxent Java appliation since version 4.3. Alternatively, LogitLink() was the Maxent default on earlier versions. To get exponential output, which can be interpreted as predicted abundance, use LogLink() IdentityLink() returns the exponent without any transformation.
  • clamp: If true, values in x will be clamped to the range the model was trained on. Defaults to false.

Returns

A Vector with the resulting predictions.

Example

using Maxnet
p_a, env = Maxnet.bradypus();
bradypus_model = maxnet(p_a, env; features = "lq")
prediction = predict(bradypus_model, env)
source

Types

Maxnet.MaxnetBinaryClassifierType
MaxnetBinaryClassifier

A model type for constructing a Maxnet, based on Maxnet.jl, and implementing the MLJ model interface.

From MLJ, the type can be imported using

MaxnetBinaryClassifier = @load MaxnetBinaryClassifier pkg=Maxnet

Do model = MaxnetBinaryClassifier() to construct an instance with default hyper-parameters. Provide keyword arguments to override hyper-parameter defaults, as in MaxnetBinaryClassifier(features=...).

Training data

In MLJ or MLJBase, bind an instance model to data with

mach = machine(model, X, y)

where

  • X: any table of input features (eg, a DataFrame) whose columns each have one of the following element scitypes: Continuous or <:Multiclass. Check scitypes with schema(X).

  • y: is the target, which can be any AbstractVector whose element scitype is <:Binary. The first class should refer to background values, and the second class to presence values.

Hyper-parameters

  • features: Specifies which features classes to use in the model, e.g. "lqh" for linear, quadratic and hinge features. See also Maxnet.maxnet
  • regularization_multiplier = 1.0: 'Adjust how tight the model will fit. Increasing this will reduce overfitting.
  • regularization_function: A function to compute the regularization of each feature class. Defaults to Maxnet.default_regularization
  • addsamplestobackground = true: Controls wether to add presence values to the background.
  • n_knots = 50: The number of knots used for Threshold and Hinge features. A higher number gives more flexibility for these features.
  • weight_factor = 100.0: A Float64 value to adjust the weight of the background samples.
  • link = Maxnet.CloglogLink(): The link function to use when predicting. See Maxnet.predict
  • clamp = false: Clamp values passed to MLJBase.predict to the range the model was trained on.

Operations

  • predict(mach, Xnew): return predictions of the target given features Xnew having the same scitype as X above. Predictions are probabilistic and can be interpreted as the probability of presence.

Fitted Parameters

The fields of fitted_params(mach) are:

  • fitresult: A Tuple where the first entry is the Maxnet.MaxnetModel returned by the Maxnet algorithm and the second the entry is the classes of y

Report

The fields of report(mach) are:

  • selected_variables: A Vector of Symbols of the variables that were selected.
  • selected_features: A Vector of Maxnet.ModelMatrixColumn with the features that were selected.
  • complexity: the number of selected features in the model.

Example

using MLJBase, Maxnet
p_a, env = Maxnet.bradypus()
y = coerce(p_a, Binary)
X = coerce(env, Count => Continuous)

mach = machine(MaxnetBinaryClassifier(features = "lqp"), X, y)
fit!(mach)
yhat = MLJBase.predict(mach, env)
source