Skip to contents

The goal of rinfa is to provide Rust bindings for parsnip model specifications.

Installation

You can install the development version of rinfa from GitHub with:

# install.packages("devtools")
devtools::install_github("simonpcouch/rinfa")

Example

x <- matrix(rnorm(3e7), ncol = 3, dimnames = list(NULL, paste0("X", 1:3)))
y <- rnorm(1e7)

dat <- cbind(as.data.frame(x), y)

# the usual formula interface
system.time(
  lm(y ~ ., dat)
)
#>    user  system elapsed 
#>   1.097   0.189   1.292

system.time(
  # lm()'s speedy friend (still from base R)
  .lm.fit(x, y)
)
#>    user  system elapsed 
#>   0.321   0.022   0.344

# rinfa's implementation
library(rinfa)

system.time({
  .linfa_linear_reg(x, y)
})
#>    user  system elapsed 
#>   0.115   0.046   0.161

To use rinfa with tidymodels, set the modeling engine to "linfa":

# using the formula interface:
linfa_fit <- fit(linear_reg(engine = "linfa"), y ~ ., dat)

# using the (more performant, in this case) XY interface:
linfa_fit_xy <- fit_xy(linear_reg(engine = "linfa"), x = x, y = y)

Available implementations

The rinfa package provides an additional engine "linfa" for the models in the following table:

model engine mode
decision_tree linfa classification
linear_reg linfa regression
logistic_reg linfa classification
multinom_reg linfa classification
naive_Bayes linfa classification
svm_linear linfa classification

To read more about the design of rinfa, see R/README.md.