Other

项目介绍

tidymodels/tidypredict 是一个托管在 GitHub 上的开源项目,主要使用 R 编写,采用 Other 许可证,目前获得 265 个 Star、32 次 Fork。

仓库全名
tidymodels/tidypredict
开源许可证
Other
Star 数
265
Fork 数
32
未关闭 Issue
4

README 摘要

tidypredict The main goal of tidypredict is to enable running predictions inside databases. It reads the model, extracts the components needed to calculate the prediction, and then creates an R formula that can be translated into SQL. In other words, it is able to parse a model such as this one: tidypredict can return a SQL statement that is ready to run inside the database. Because it uses dplyr’s database…

完整内容见 GitHub 原始 README 或本页 。

常见问题

tidypredict 用什么语言开发?

主要使用 R 编写,采用 Other 许可证,目前有 265 个 Star。

tidypredict 可以免费商用吗?

仓库标注的许可证为 Other,商用前请先阅读仓库 LICENSE 文件确认授权范围。

如何获取 tidypredict 的源码?

可以直接克隆仓库:git clone https://github.com/tidymodels/tidypredict.git,默认分支为 main;安装与运行步骤见仓库 README。

tidypredict 最近还在维护吗?

仓库最近一次更新为 2 周前,当前有 4 个未关闭 Issue;Star 数为 265,可作为社区活跃度的参考。

关于

Run predictions inside the database

描述取自 GitHub 官方 API,中文内容由 GitRead 中文社区 编辑团队整理。

简要分析

热度分
344
价值分
169
活跃状态
活跃

README

tidypredict tidypredict website

R-CMD-check CRAN
status Downloads Codecov test
coverage lifecycle

The main goal of tidypredict is to enable running predictions inside databases. It reads the model, extracts the components needed to calculate the prediction, and then creates an R formula that can be translated into SQL. In other words, it is able to parse a model such as this one:

model <- lm(mpg ~ wt + cyl, data = mtcars)

tidypredict can return a SQL statement that is ready to run inside the database. Because it uses dplyr’s database interface, it works with several databases back-ends, such as MS SQL:

tidypredict_sql(model, dbplyr::simulate_mssql())
## <SQL> (39.686261480253 + ([wt] * -3.19097213898374)) + ([cyl] * -1.5077949682598)

Installation

Install tidypredict from CRAN using:

install.packages("tidypredict")

Or install the development version using devtools as follows:

install.packages("remotes")
remotes::install_github("tidymodels/tidypredict")

Functions

tidypredict has only a few functions, and it is not expected that number to grow much. The main focus at this time is to add more models to support.

Function Description
tidypredict_fit() Returns an R formula that calculates the prediction
tidypredict_sql() Returns a SQL query based on the formula from tidypredict_fit()
tidypredict_to_column() Adds a new column using the formula from tidypredict_fit()
tidypredict_test() Tests tidypredict predictions against the model’s native predict() function
tidypredict_interval() Same as tidypredict_fit() but for intervals (only works with lm and glm)
tidypredict_sql_interval() Same as tidypredict_sql() but for intervals (only works with lm and glm)
parse_model() Creates a list spec based on the R model
as_parsed_model() Prepares an object to be recognized as a parsed model

How it works

Instead of translating directly to a SQL statement, tidypredict creates an R formula. That formula can then be used inside dplyr. The overall workflow would be as illustrated in the image above, and described here:

  1. Fit the model using a base R model, or one from the packages listed in Supported Models
  2. tidypredict reads model, and creates a list object with the necessary components to run predictions
  3. tidypredict builds an R formula based on the list object
  4. dplyr evaluates the formula created by tidypredict
  5. dplyr translates the formula into a SQL statement, or any other interfaces.
  6. The database executes the SQL statement(s) created by dplyr

Parsed model spec

tidypredict writes and reads a spec based on a model. Instead of simply writing the R formula directly, splitting the spec from the formula adds the following capabilities:

  1. No more saving models as .rds - Specifically for cases when the model needs to be used for predictions in a Shiny app.
  2. Beyond R models - Technically, anything that can write a proper spec, can be read into tidypredict. It also means, that the parsed model spec can become a good alternative to using PMML.

Supported models

tidypredict parses 43 fitted model classes from 30 modeling packages. Supported models has the full list, with the parsnip spec and engine for each and a link to a worked example. In brief:

  • Regression: lm(), glm(), glmnet::glmnet(), LiblineaR::LiblineaR(), quantreg::rq(), nnet::multinom(), kernlab::ksvm(), nnet::nnet(), earth::earth(), mixOmics PLS, parsnip::nullmodel()
  • Classification and discriminant analysis: naivebayes::naive_bayes(), klaR::NaiveBayes(), MASS::lda(), MASS::qda(), mda::fda(), sda::sda(), sparsediscrim
  • Trees and forests: rpart::rpart(), C50::C5.0(), partykit::ctree() and cforest(), randomForest::randomForest(), ranger::ranger(), aorsf::orsf(), baguette::bagger(), dbarts::bart()
  • Boosting and rules: xgboost, lightgbm, catboost, mboost::blackboost(), Cubist::cubist(), xrf::xrf(), H2O GBM and RuleFit

tidypredict dispatches on the class of the fitted model, so models fitted through parsnip work for any engine whose underlying model appears above: pass the parsnip fit object to tidypredict_fit() just as you would the engine’s own fit.

tidypredict_interval() and tidypredict_sql_interval() are narrower, and only support lm() and glm() models.

broom

The tidy() function from broom works with linear models parsed via tidypredict

pm <- parse_model(lm(wt ~ ., mtcars))
tidy(pm)
## # A tibble: 11 × 2
##    term        estimate
##    <chr>          <dbl>
##  1 (Intercept) -0.231  
##  2 mpg         -0.0417 
##  3 cyl         -0.0573 
##  4 disp         0.00669
##  5 hp          -0.00323
##  6 drat        -0.0901 
##  7 qsec         0.200  
##  8 vs          -0.0664 
##  9 am           0.0184 
## 10 gear        -0.0935 
## 11 carb         0.249

Contributing

This project is released with a Contributor Code of Conduct. By contributing to this project, you agree to abide by its terms.

评论

暂无评论