neuralnetwork fits multilayer perceptrons for tabular
data in R. It accepts formulas, data frames, matrices, and vectors;
handles regression and classification; and includes tuning,
cross-validation, metrics, feature importance, and model save/load
helpers. It is meant for users who need more than nnet’s
single-hidden-layer interface or neuralnet’s manual
training style, but do not want to bring in a full deep-learning
stack.
install.packages("neuralnetwork")To install the local source tarball:
install.packages("neuralnetwork_0.1.1.tar.gz", repos = NULL, type = "source")library(neuralnetwork)
fit <- nn_fit(
Species ~ .,
data = iris,
hidden = "auto",
optimizer = "auto",
epochs = 20,
validation_split = 0.2,
seed = 1,
verbose = FALSE
)
fit
predict(fit, iris[1:5, ], type = "class")
round(predict(fit, iris[1:5, ], type = "prob"), 3)
ev <- nn_evaluate(fit, iris)
evThe printed model reports the architecture, optimizer, loss, backend,
training length, final training score, and validation score when
available. nn_evaluate() returns the metrics as a named
vector and prints a compact confusion matrix for classification.
For regression, put a numeric response on the left side of the formula. Training can scale the target internally; predictions are returned on the original response scale.
fit_reg <- nn_fit(
mpg ~ wt + hp + disp,
data = mtcars,
hidden = c(8, 4),
optimizer = "adam",
epochs = 40,
batch_size = 8,
learning_rate = 0.01,
validation_split = 0.2,
seed = 2,
verbose = FALSE
)
predict(fit_reg, mtcars[1:5, ])
nn_evaluate(fit_reg, mtcars)For regression problems with outliers, use Huber loss:
fit_huber <- nn_fit(
mpg ~ wt + hp + disp,
data = mtcars,
hidden = c(8, 4),
optimizer = "adam",
loss = "huber",
huber_delta = 1,
epochs = 40,
batch_size = 8,
learning_rate = 0.01,
seed = 3,
verbose = FALSE
)Reasonable first choices:
hidden = "auto" for a small architecture chosen from
the task and input width.optimizer = "auto" for L-BFGS on small deterministic
problems and Adam when using stochastic features such as dropout or
callbacks.epochs is the optimizer iteration
limit and printed training length is reported as function
evaluations.validation_split = 0.2 for validation loss, early
stopping, or validation-based tuning.metric = "balanced_accuracy" for imbalanced
classification, metric = "f1" when the positive class is
the focus, and metric = "mae" or
metric = "rmse" for regression.loss = "huber" for regression data where outliers may
dominate squared error.tuned <- nn_tune(
Species ~ .,
data = iris,
grid = list(
hidden = list(4, c(6, 3)),
learning_rate = c(0.01, 0.003)
),
metric = "balanced_accuracy",
epochs = 8,
validation_split = 0.2,
seed = 4,
verbose = FALSE
)
tuned
tuned$best_modelFor exploratory grids, error_action = "continue" keeps
candidate failures in the results table while ranking the usable
fits.
cv <- nn_cv(
Species ~ .,
data = iris,
k = 3,
metric = "f1",
hidden = 4,
epochs = 5,
seed = 5,
verbose = FALSE
)
cvimp <- nn_permutation_importance(
fit_reg,
mtcars,
metric = "mae",
n_repeats = 3,
seed = 6
)
imp| Need | Use |
|---|---|
| Fit a model | nn_fit() |
| Predict classes, probabilities, or numeric responses | predict() |
| Evaluate metrics | nn_evaluate() |
| Tune a grid | nn_tune() |
| Cross-validate | nn_cv() |
| Estimate feature importance | nn_permutation_importance() |
| Save and load | nn_save(), nn_load() |
Use nnet / neuralnet style helpers |
nn_multinom(), nn_compute(),
nn_generalized_weights() |
hidden = 0 for no
hidden layer.predict(), print(),
plot(), summary(), and
coef().stats::optim().nnet and
neuralnet tasks: nn_multinom(),
nn_class_ind(), nn_which_is_max(),
nn_compute(), nn_generalized_weights(),
nn_gwplot(), nn_hessian(), and
nn_confint().Run vignette("neuralnetwork") for the longer worked
example.
Reference help inside R: ?neuralnetwork,
?neuralnetwork-metrics,
?neuralnetwork-callbacks, and
?neuralnetwork-objects.