A Unified Tidy Interface to R's Machine Learning Ecosystem
- CRAN checks, method
Method
Checks and health
CRAN runs every current package through
R CMD checkon a set of machines and publishes a result for each one. The health shown on a package page comes from these results alone.- Problems
- Notes alone never count against a package, but a warning, an error or a failure on any platform is a problem. Open CRAN deadlines are a fact of their own, shown as a clock after the mark, so the mark always says what the checks found.
- Checks only
- Health reflects CRAN's check results and nothing else. Even a package with no tests, no coverage or no recent release can have every platform OK.
- Once a day
- Results are collected once a day from files CRAN publishes. Each platform is one machine set-up, named by its R version, operating system, architecture and compiler, such as r-devel-linux-x86_64-fedora-clang.
- Platforms counted
- The 13 in 3 of 13 is the number of platform rows CRAN published for that package on the day of collection. The set of machines changes over time, so the number is not fixed, and a package missing from a platform counts as neither passing nor failing there.
- All OK13 platforms
- CRAN 30-day downloads, method
- 393−5.1% down on the 30 days before, the worse direction
- Dependent packages, method
Method
Reverse dependencies
Dependent packages are other packages that list this one under
Depends,ImportsorLinkingToin theirDESCRIPTIONfile. Those fields list the packages a package needs to install, so dependents break if this one is archived or broken.- As declared
- The counts follow the declarations as written, not whether a package uses the other one when it runs.
- Suggests apart
- Packages that list this one only under
Suggestsinstall and run without it, and use it for tests, examples or an optional feature. They are counted as Suggested by, never among the dependents, and a package that also lists it under one of the three fields is a dependent and is not counted again. - Zero
- Zero dependents means no current CRAN package declares a need for this one, though some may suggest it. On 28 Oct 2026, 19,572 of the 25,583 current CRAN packages had no dependent package.
- 0none suggest it
- Test coverage, method
Method
Test coverage
Test coverage is measured by downloading each CRAN package's current source file, installing its dependencies, building it and running its tests under covr.
- Almost half of CRAN has no tests to run
- Only CRAN packages are measured. Many have no percentage, most often because the package has no tests, and that blank is a recorded outcome, not missing data.
- NOT_CRAN
- Tests run with NOT_CRAN=true, so tests that skip themselves on CRAN run here, and the figure can differ from what CRAN's own checks see.
- Current version only
- Only the current version is measured, and a new version on CRAN is measured again. Older rows are kept but never filled in later. This is one package's run.
- Never 0%
- On a package page three states stay apart: measured, no tests, and not measured. Neither of the last two is ever shown as 0%.
- 85%of lines run by tests
- Advisories, method
Method
Security advisories
Advisories come from the R Consortium advisory database, a community record of security problems in R packages, as OSV publishes it.
- The copy
- The record is read once a day. The data is published under the Apache License 2.0 and is credited on the advisories list.
- Box under the name
- Under the package's name, a box names any advisory that affects the current release, with its fix or that there is none.
- Ranges
- Advisories state ranges, such as from 0.9.12 up to but not including 1.8.8. Each range is checked against every version CRAN has published, using the version rules R itself uses, so a release that came out after the advisory was written is still caught by its range.
- Not the package
- The rating is for the library flaw itself, not for how exposed the R package is, and it is never added up into a figure for the package.
- None known
About
Method, About Method Licence figures come from the Licences
License field of each package's DESCRIPTION file, read the way R itself reads it. No licence file is opened.tools::analyze_license() and R's own licence database, as CRAN's checks read it.| is read, so one string can offer two families.
Provides a unified tidyverse-compatible interface to R's machine learning ecosystem - from data ingestion to model publishing.
Full description
Provides a unified tidyverse-compatible interface to R's machine learning ecosystem - from data ingestion to model publishing. The tl_read() family reads data from files ('CSV', 'Excel', 'Parquet', 'JSON'), databases ('SQLite', 'PostgreSQL', 'MySQL', 'BigQuery'), and cloud sources ('S3', 'GitHub', 'Kaggle'). The tl_model() function wraps established implementations from 'glmnet', 'randomForest', 'xgboost', 'e1071', 'rpart', 'gbm', 'nnet', 'cluster', 'dbscan', and others with consistent function signatures and tidy tibble output. Results flow into unified 'ggplot2'-based visualization and optional formatted 'gt' tables via the tl_table() family. The underlying algorithms are unchanged; 'tidylearn' simply makes them easier to use together. Access raw model objects via the $fit slot for a supervised method, or $fit$model for an unsupervised one. Methods include random forests Breiman (2001) <doi:10.1023/A:1010933404324>, LASSO regression Tibshirani (1996) <doi:10.1111/j.2517-6161.1996.tb02080.x>, elastic net Zou and Hastie (2005) <doi:10.1111/j.1467-9868.2005.00503.x>, support vector machines Cortes and Vapnik (1995) <doi:10.1007/BF00994018>, and gradient boosting Friedman (2001) <doi:10.1214/aos/1013203451>.
- Maintainer
- Cesaire Tobias
- Licence
- MIT + file LICENSE
- Latest release
- 8 Oct 2026
- First release
- 6 Feb 2026
More details
- Releases
- 8
- Needs compilation
- No
- Needs R
- >= 4.1.0
- Config/testthat/edition
- 3
- RoxygenNote
- 7.3.3
Subjects (1) Method, SubjectsMethod
Subjects and collections
Subjects are the site's own grouping of CRAN packages, found by clustering. Collections are sets of packages that communities declare, such as the tidyverse.
- Subjects
- Subjects are found by clustering the words of current CRAN packages and the packages they use. No one edits them by hand.
- Collections
- Collections are sets that communities declare, through a package that installs the set or an organization on GitHub. The site finds them by rules.
- Who made each
- Subjects are marked Site and collections Community. Subjects, collections and task views are never mixed in one list.
- The day of the data
- Subjects and collections were last worked out on 22 Oct 2026.
Cite
Package
Run in R for the authors' preferred citation:
citation("tidylearn")The package provides a citation file that builds its entry when R runs it. Run citation() to see it.
R Observatory
For a number measured here: a download total, a coverage figure, an archival date.
Balamuta, J. J. (2026). R Observatory: Metrics for tidylearn version 0.6.0 [Data set]. HJJB, LLC. Data release v2026-10-28. https://doi.org/10.5281/zenodo.21843040
About
From data release v2026-10-28, which the citation names so these numbers can be found later.
Health
All 13 check platforms pass.
r-devel-linux-x86_64-debian-clangThe unreleased R on Linux, x86_64, debian-clang
OK
- Version checked
- 0.6.0
- Time taken
- 557 s
r-devel-linux-x86_64-debian-gccThe unreleased R on Linux, x86_64, debian-gcc
OK
- Version checked
- 0.6.0
- Time taken
- 373 s
r-devel-linux-x86_64-fedora-clangThe unreleased R on Linux, x86_64, fedora-clang
OK
- Version checked
- 0.6.0
- Time taken
- 401 s
r-devel-linux-x86_64-fedora-gccThe unreleased R on Linux, x86_64, fedora-gcc
OK
- Version checked
- 0.6.0
- Time taken
- 368 s
r-devel-windows-x86_64The unreleased R on Windows, x86_64
OK
- Version checked
- 0.6.0
- Time taken
- 706 s
r-oldrel-macos-arm64The previous release of R on macOS, arm64
OK
- Version checked
- 0.6.0
- Time taken
- 136 s
r-oldrel-macos-x86_64The previous release of R on macOS, x86_64
OK
- Version checked
- 0.6.0
- Time taken
- 419 s
r-oldrel-windows-x86_64The previous release of R on Windows, x86_64
OK
- Version checked
- 0.6.0
- Time taken
- 772 s
r-patched-linux-x86_64The patched release of R on Linux, x86_64
OK
- Version checked
- 0.6.0
- Time taken
- 536 s
r-release-linux-x86_64The current release of R on Linux, x86_64
OK
- Version checked
- 0.6.0
- Time taken
- 530 s
r-release-macos-arm64The current release of R on macOS, arm64
OK
- Version checked
- 0.6.0
- Time taken
- 111 s
r-release-macos-x86_64The current release of R on macOS, x86_64
OK
- Version checked
- 0.6.0
- Time taken
- 695 s
r-release-windows-x86_64The current release of R on Windows, x86_64
OK
- Version checked
- 0.6.0
- Time taken
- 630 s
- 13 OK
Over time
No change since 4 Aug 2026
As a list (7)
| Changed | Worst status | OK | Notes | Warnings | Errors |
|---|---|---|---|---|---|
| 4 Aug 2026 | OK | 13 | 0 | 0 | 0 |
| 1 Aug 2026 | Note | 12 | 1 | 0 | 0 |
| 9 Jun 2026 | OK | 13 | 0 | 0 | 0 |
| 8 Jun 2026 | Error | 12 | 0 | 0 | 1 |
| 14 Apr 2026 | OK | 14 | 0 | 0 | 0 |
| 10 Apr 2026 | Error | 13 | 0 | 0 | 1 |
| 10 Mar 2026 | OK | 14 | 0 | 0 | 0 |
Since March 2026
Downloads
Method, Downloads Method Download figures count requests logged by each distribution channel. They are not counts of installs or of users, because each channel publishes its own totals and this site reads them.Downloads
- Total downloads in the last 30 days
- 410−7.2% down on the 30 days before, the worse directionIt is the sum of 3 channels: CRAN, r2u and autoCRAN.
CRAN rank
8,675 of 26,530
CRAN
393 downloads in the last 30 days
- Rank
- 8,675 of 26,530
- Change
- −5.1% down on the 30 days before, the worse direction
It is in the total. Take it out
r2u
15 downloads in the last 30 days
- Rank
- 5,485 of 30,526
- Change
- +15.4% up on the 30 days before, the better direction
It is in the total. Take it out
autoCRAN
2 downloads in the last 30 days
- Rank
- 22,452 of 29,212
- Change
- −86.7% down on the 30 days before, the worse direction
It is in the total. Take it out
The total is 410 downloads in the last 30 days. It is the sum of 3 channels: CRAN, r2u and autoCRAN.
Over time
Dependencies
- Needs
- 22
- Dependent packages
- 0
- Suggested by
- 0
Needs (22)
Code
Method, Code Method Code metrics come from reading the released source of each package version. The package is never installed, loaded or run.Code metrics
README, vignettes, a NEWS file and the shares read from its help pages. Files kept only in the repository, such as a pkgdown configuration or CI files, are read by the repository scan instead.
- Functions
- 524
- Public exports
- 157
- Lines of R code
- 33,052
- Median complexity
- 4
Functions (524)
Size and composition
Lines by kind (68,005)
| Kind | Lines | Share |
|---|---|---|
| R code | 33,052 | 49% |
| Tests | 21,834 | 32% |
| Documentation | 9,078 | 13% |
| Guides | 4,041 | 6% |
Lines by language
| Language | Lines | Share |
|---|---|---|
| R | 54,886 | 81% |
| Rd | 9,078 | 13% |
| Vignettes | 4,041 | 6% |
Languages are counted from file extensions.
- Files
- 372
- R functions
- 524
- Object systems
- S3: 26 methods
Complexity
- Median
- 4
- Mean
- 5.6
- Highest
- 54
- Median lines per function
- 26
About complexity
Cyclomatic complexity counts the independent paths through a function: 1 is a straight line, higher is harder to test. R functions only.
Call graph figures
- R functions
- 524
- Calls
- 970
- Unconnected
- 50
- Groups
- 3
Growth (8 releases)
Release changes
Tests
The tests ran and coverage was measured.
- Lines run by tests
- 85.3%
- Expressions run by tests
- 86.2%
- Test cases
- 1,065
- Exports named in tests
- 88.5%
Coverage by file (39)
Coverage run
- Lines counted
- 15,346
- Lines the tests ran
- 13,090
- Tests passed
- Yes
- Measured with
- covr 3.6.5 on R 4.6.1
Test suite
- Has tests
- Yes
- Test frameworks
- testthat
- Test cases
- 1,065
- Lines of tests
- 21,834
- Test lines per line of code
- 0.66
Documentation
- Exports documented
- 99.4%
- Arguments documented
- 99.7%
- Return value documented
- 100%
- Help pages with examples
- 73.7%
- Examples run in checks
- 16.8%
Guides (11)
- Automated Machine Learning with tidylearn
- Compute Backends: CPU, GPU and Cloud
- Data Ingestion with tidylearn
- Diagnostics
- Getting Started with tidylearn
- Integration Workflows: Combining Supervised and Unsupervised Learning
- Market Basket Analysis
- Reporting with tidylearn
- Supervised Learning with tidylearn
- Tuning and Pipelines
- Unsupervised Learning with tidylearn
Other documentation
- README
- Yes, 1,343 words
- Release notes file
- Yes
- Help pages
- 243
- Lines of documentation
- 9,078
People
Method, People Method People on the site are the names packages give them in their Author and maintainer identity
DESCRIPTION files: authors from the author list, and the maintainer from the Maintainer field. Spellings of one name become one person only where the rules below allow it, and when in doubt the rules keep people apart.
Maintainer since 0.1.0 (2026), author
Repository
Method, figures by host Method Repository signals are the figures read from the source repository a package links to: stars, forks, issues, commits, releases and the time issues take to close. They are read from GitHub, GitLab, Codeberg and Bitbucket.Repository signals
URL and BugReports fields of its DESCRIPTION file. Read-only mirrors, the cran and bioc accounts on GitHub and git.bioconductor.org, are left out.
ces0491 / tidylearn on github.com
- Stars
- 5no change on 30 days ago
- Forks
- 1
- Open issues
- 0
- Last commit
- 9 Oct 2026
Activity
- Commits
- 188
- Open pull requests
- 0
- Tagged releases
- 0
- Latest tagged release
- –
- In development
- Default branch at 0.6.0.9000, ahead of CRAN 0.6.0 (checked 2026-10-25)
- Issues closed in
- 26 days (median)
- Pull requests closed in
- 0 days (median)
- Pull requests merged
- 100%
- Created
- 9 Nov 2025
- Licence file reads as
- –
Development practices (10)
| Kind | Found |
|---|---|
| Continuous integration | GitHub Actions, R CMD check workflow The R CMD check workflow runs on Linux, macOS and Windows, and on R-devel |
| Governance and community | Contributing guide |
| Docs source | pkgdown GitHub Pages site last deployed 2026-10-09 The repository has a site deploy workflow pkgdown site last built 2026-10-09 |
| CRAN release process | cran-comments.md, CRAN-SUBMISSION |
| Lint, format, editor | lintr, RStudio project |
Method, repository practices Method Beta Each week a scan of the public source repository a package links to looks for the tools a maintainer has set up, and the Repository section lists the findings. Repositories on GitHub and GitLab are scanned.Repository practices
R CMD build reads .Rbuildignore and leaves out files used only in development, such as .github/, .lintr, renv/, a Dockerfile and cran-comments.md, so the released source file holds almost none of them. The repository is the one place these files stay visible.
AI tools
Method, AI tools Method Beta What is found in a repository is not a measure of the code.AI tool findings
Tools
| Tool | First seen | Found | Commits crediting it |
|---|---|---|---|
| Claude Code | 19 Jan 2026 | Named in .Rbuildignore.claudeNamed in .gitignore.claudePull request it wrote: opened by a project member | 134 at least |
- Named in .Rbuildignore
- Named in .gitignore
- Pull request
Models
| Model | Context window | Commits | First commit | Last commit | Credit lines of |
|---|---|---|---|---|---|
| Claude Opus 5.5 | 42 at least | 5 Oct 2026 | 8 Oct 2026 | Claude Code | |
| Claude Opus 5 | 1M | 47 at least | 3 Aug 2026 | 21 Sep 2026 | Claude Code |
| Claude Opus 4.7 | 1M | 3 at least | 22 May 2026 | 22 May 2026 | Claude Code |
| Claude Opus 4.6 | 1M | 8 at least | 18 Mar 2026 | 9 Apr 2026 | Claude Code |
History
Method, History Method Archived is built from CRAN's archive records, its list of check deadlines and Bioconductor's package records. Every figure is counted to 28 Oct 2026, the day the data was read.Packages leaving
| Version | Released | R |
|---|---|---|
| 0.6.0 current | 8 Oct 2026 | 4.6.1 |
| 0.5.0 | 2 Sep 2026 | 4.6.1 |
| 0.4.0 | 3 Aug 2026 | 4.6.1 |
| 0.3.1 | 19 May 2026 | 4.6.0 |
| 0.3.0 | 9 Apr 2026 | 4.5.3 |
| 0.2.0 | 16 Mar 2026 | 4.5.3 |
| 0.1.1 | 13 Mar 2026 | 4.5.3 |
| 0.1.0 | 6 Feb 2026 | 4.5.2 |
Release notes (0.6.0)
Breaking Changes
- tidylearn requires R 4.1.0 or later. The package, its README and the vignettes use the native
|>pipe, which R 3.6 and 4.0 cannot parse. magrittr's%>%is still re-exported, so existing code that pipes with it afterlibrary(tidylearn)keeps working. - tidylearn requires ggplot2 3.4.0 or later. The plots set line widths with the
linewidthaesthetic, which ggplot2 3.3 ignores with an unknown-parameter warning and draws at the default width. The rlang floor rises from 0.4.0 to 1.0.0, the version ggplot2 3.4.0 imports, so it changes nothing for an install that meets the ggplot2 one. - Some calls that ran in 0.5.0 are now errors, with a message naming the problem: each passed an argument tidylearn ignored or returned a meaningless result. Bug Fixes describes all of them. Among them are:
- an argument a method cannot use, such as
maxdeth = 1oroffset =withmethod = "tree", a name glmnet does not take with"ridge","lasso"or"elastic_net", and a misspelt argument totl_pipeline(); - an
offset()term with a method that cannot apply it atpredict(), which is every method but"linear","polynomial"and"logistic"; - a metric name
tl_evaluate()ortl_cv()does not compute, such as"RMSE"; predict(type = "prob")ortype = "class"on a regression model, and a misspelttype;tl_prepare_data(impute_method = "knn"), andtl_split()with apropoutside (0, 1);- repeated model names in
tl_compare_cv()andtl_plot_importance_comparison(); typeintl_plot_interaction(), and anexclude_varsintl_auto_interactions()that is not a predictor;- a numeric response in
tl_semisupervised(), andtl_anomaly_aware(action = "downweight")with"svm"or"deep". tl_model()makes a text predictor a factor before fitting, and stores it as one in$data.method = "forest"coded a character column as numbers by the values present in whichever frame it was handed, so a row's prediction depended on the rows scored with it: on a 120-row frame drawn afterset.seed(7), in which group"c"sits near 10, three"c"rows scored alone predicted -0.11, -0.15 and 0.45, and 9.47, 9.26 and 9.78 inside the full frame. A forest now splits on the column as a category, so its fitted values change, and a text column with more than 53 distinct values is refused by randomForest ("Can not handle categorical predictors with more than 53 categories"); exclude identifiers withy ~ . - id.method = "boost"fits a text predictor, where gbm refused it ("variable 1: grp is not of type numeric, ordered, or factor"), and"xgboost"predicts a single row of one, where it failed with "contrasts can be applied only to factors with 2 or more levels". A text column used only inside a term, such asas.numeric(code), keeps its type.predict()reads a supervised model's categorical columns against the levels it was trained on, before any method sees them. New data holding only some of the categories works with"forest", which failed with "Type of predictors in new data do not match that of the training data" fordata.frame(cyl = factor("6"), wt = 3). A value given as text, or as the number a factor was made from, reads the same. A level the model was not trained on is an error naming the column, the level and the training levels;"boost"used to return a prediction for it, and the other methods' errors came from their backends.- `predict()` on a `"ridge"`, `"lasso"` or `"elastic_net"` model now uses `lambda_1se`, so its predictions change. It used
lambda_min, whiletl_coefficients(),tl_table_coefficients()and importance all reportlambda_1seby default, so the coefficients on display were not the ones behind the predictions.lambda_1seis the penalty the fit itself was documented as preferring for generalisation. Metrics, cross-validation and tuning scores for these methods move with it. - A
"ridge","lasso"or"elastic_net"model is now the full-data fitcv.glmnet()makes itself, in place of a secondglmnet()run along the same penalties. The two agreed only to glmnet's convergence tolerance, so coefficients and predictions move slightly -- by up to 0.004 atlambda_1seformpg ~ .onmtcarswithset.seed(1)-- and now matchcoef()andpredict()on thecv.glmnetobject kept inattr(model$fit, "cv_results"). When cross-validation chooses the largest penalty, every slope is now exactly zero: the second fit left one at about -6e-17, whichtl_table_importance()ranked at importance 100 andtl_plot_importance_regularized()drew as a bar of 5.9e-17 (predictorbof 40 rows of noise drawn afterset.seed(3)). Both now stop with the message that the penalty dropped every predictor, as for any penalty that keeps none. method = "polynomial"keeps a numeric term that is also part of an interaction as it is and adds its powers asI(x^2)up to the degree. Formpg ~ wt * hpthe fit and its predictions are those of 0.5.0, but the terms are nowwt,hp,I(wt^2),I(hp^2)andwt:hp, where 0.5.0 named thempoly(wt, degree = 2, raw = TRUE)1,poly(wt, degree = 2, raw = TRUE)2and so on, sotl_coefficients()andtl_table_coefficients()list other names in another order.predict()on an unsupervised model returns.obs_id, the row names of the data predicted on, and as many components as the model keeps, on both the training and the new-data path. A two-dimensional MDS fit fromtl_reduce_dimensions(n_components = 2)predicted.obs_idandDim1only, andDim1andDim2without.obs_idfor tibble input. PCA's training projection returned every component however many were kept. k-means assignments of new data had no.obs_id, and PCA projections of new data numbered the rows"1","2"whatever they were called.predict(type = "prob")on an"xgboost"model returns a tibble, as every other method does. It returned a data frame.tl_split(stratify = )cuts a numeric column with more than five distinct values at its quartiles. Each distinct value used to be a stratum, and a stratum holding a single row corrupted the split:sample()on one number draws from1:n, so that stratum drew a row from elsewhere in the data -- sometimes one already drawn -- and left its own row in test. On 50 rows of a continuousywithseed = 1, 0.5.0 drew 50 training rows holding only 22 distinct observations and put 28 in test; the same call now splits 38/12, each quartile atprop. Onmtcarsstratified bympg, most of whose values occur once, the split withseed = 1returned 43 rows from 32, and now splits 24/8. A numeric column with five or fewer distinct values, such ascyl, is still split by value. An integer ID such as1:50has more than five, so it is cut at its quartiles like any other numeric column. A stratum of a single row goes to the training set, so a level seen once is one the model was trained on. When such strata together hold more than a tenth of the rows, as in a character ID column, they are pooled into one stratum and split together; for a column of 50 distinct strings that is the unstratified draw, 40/10. A split that leaves the test set empty, which only a single row now does, warns.tl_model(method = "deep")holds out a random set of rows forvalidation_split, recorded in$fit$validation_rows. keras holds out the last rows as given, which oniris, sorted by species, were rows 121 to 150: 30 of the 50 virginica rows, so the model trained on 20 virginica against 50 of each other class and was validated on virginica alone. A row with a missing value is dropped from the predictors and the response together; the response kept it, so keras trained on pairs shifted by one row. A constant predictor is no longer scaled by its standard deviation of 0, which turned it intoNaNand gave every row the same prediction.tl_tune_xgboost(),tl_tune_nn()andtl_tune_deep()read the task from the response, astl_model()does.is_classificationdefaults toNULL, which treats a factor or character response, including one the formula computes such asfactor(am), as classification. With the old default ofFALSE,tl_tune_xgboost(iris, Species ~ .)was tuned as a regression on the class codes without a message, andtl_tune_nn()andtl_tune_deep()failed.is_classification = FALSEwith a factor response is an error, and so isis_classification = TRUEwith a computed response that is not a factor, such asI(mpg > 20), whichtl_tune_nn()ran; the message points tofactor()on the left-hand side. The response is reduced to the classes it holds, so a two-class subset ofiristhat still declares setosa is tuned as two classes;tl_tune_xgboost()had tuned it withmulti:softproband a setosa probability column.tl_tune_deep()returns the best configuration as atidylearn_modelin$model, sopredict()and the deep plots take it; the keras model is at$model$fit$model. It returned the internal list, andpredict()on it failed withno applicable method. Every configuration is scored on the same randomly held-out rows.tl_default_param_grid("xgboost")returns a grid: the valuestl_tune_xgboost()searches by default, plusnrounds, which that function picks by early stopping andtl_tune_grid()has to tune. It warned "Unknown method" and returned an empty list.is_classification, which changed no grid, now changes two regression grids:"svm"also tunesepsilon, and the large"forest"grid usesnodesize = c(3, 5, 10)around randomForest's regression default of 5 in place ofc(1, 3, 5). With the defaultis_classification = TRUEthe grids are unchanged.tl_plot_xgboost_importance()returns a ggplot, as documented, and ranks by the measureimportance_typenames. It returnedxgb.plot.importance()'s data.table, drew with base graphics, and ignoredimportance_type. A linear booster (booster = "gblinear") has only coefficients, whichimportance_type = "weight"draws, ranked by size; left at its default,importance_typetakes them for such a model.tl_plot_partial_dependence()on a classification model draws one line per class when there are three or more, and the positive class (the second level) for two, named on the y axis. Its data has aclasscolumn for the class each row describes. The curve was the mean probability of the second class alone, and the multiclassclasscolumn held whichever class had the highest mean probability, which was not the class drawn....intl_semisupervised()andtl_stratified_models()reaches the supervised model only, and the newcluster_argstakes the clustering step's settings. Both stages got..., socp = 0.001failed in k-means with "unused argument", andnstart = 5reached k-means and then brokeglm(). A clustering setting now goes incluster_args, e.g.cluster_args = list(nstart = 5); one left in..., such asnstart,iter.max,algorithm,hclust_methodor pam'svariant, is refused with a message saying so.sampsize,keep.dataandtrace, which randomForest, gbm and nnet take, still reach the supervised model.tl_semisupervised()with a response the formula computes, such asfactor(am) ~ wt + hp + qsec, writes each propagated label to the column the response is computed from, as that column's own value in a labelled row of the same class. The returned$data$amtherefore holds 0 and 1, where it held a factor.tl_interaction_effects()holds a variable it does not vary at its most frequent value, astl_plot_interaction()does. It held a factor at its first level: withcarba factor,mpg ~ wt * hp + carbwas evaluated atcarb = 1by one function andcarb = 2by the other.tl_interaction_effects()returns a factor variable in its results --var,by_varor a variable it holds fixed -- as a factor with the model's levels, where it was a character vector; the values are unchanged. That is what lets it work for a forest with a factor predictor, which failed withType of predictors in new data do not match that of the training databecause the grid held the factor as text. Both it andtl_plot_interaction()leave out a factor level no row uses: on iris without setosa, both predicted at setosa, whichpredict()refused as a new level. They also leave out a missing value of a character variable, whichtl_interaction_effects()failed on with0 (non-NA) cases. A logical variable is treated as two-level; both functions failed withvariable 'lg' was fitted with type "logical" but type "numeric" was supplied. A factor value given inat_valuesorfixed_valuestakes the column's levels, and one that is not a level is refused.mpg ~ log(wt) * hpno longer warns that the model has nowt:hpinteraction.tl_interaction_effects()reportsfit,lower,upperandslopeon the response scale whether or notintervals = TRUE, and itssecolumn is removed. With intervals a logistic model's values were log odds (am ~ wt * hpgavefitfrom -32 to 40) and without them probabilities. A glm's interval is now built on the link scale and transformed back, and a linear model's is the t-based intervalpredict.lm()gives. For a glm thesecolumn was on the link scale. A model with no standard errors, such as a tree, failed with$ operator is invalid for atomic vectorsand now returns point estimates with a message.augment_hclust()attaches clusters by position. It joined onrow_number(), which counts within each group, so on a grouped tibble ofUSArrestscut atk = 334 of 50 rows received another row's cluster. Data with a different number of rows from the tree was padded withNAor cut short without a message; it is now an error naming both counts. The caller's grouping stays on the returned data, and so do its row names, which the join reset to"1","2", ...; aclustercolumn the data already has is kept beside the new one under dplyr's repaired names (cluster...5andcluster...6forUSArrests), where the join gavecluster.xandcluster.y.tidy_rules(), and sotidy_apriori()'srules_tbl, gains the list columnslhs_itemsandrhs_items, each side's items as a character vector, after the quality measures. The item-matching helpers read them; a table of rules without them is refused with a message saying to keep them, and atidy_apriori()result saved without them is rebuilt from the rules it carries. An empty rule set now gives a zero-row tibble with the usual columns. It gave a tibble with no columns, sorecommend_products()failed withobject 'confidence' not found,filter_rules_by_item()andfind_related_items()withobject 'lhs' not found, andvisualize_rules()when the plot was drawn; they now return zero rows, or an empty plot.tidy_pam()'smedoid_indexis the medoid's integer row position.pam()reports medoids by label when the distances carry labels, sotidy_pam(mtcars, k = 3)gave"Toyota Corona","Merc 450SE"and"Duster 360"where the same data as a tibble gave 21, 12 and 7. Both now give 21, 12 and 7.calc_validation_metrics()andcompare_clusterings()gain ann_noisecolumn, afteravg_size, counting the points labelled 0, DBSCAN's label for noise. The other clustering methods number their clusters from 1, so it is 0 for them. The columns after it move one place along.- Counts that ran a range backwards or reached
cutree()as a vector are refused with a message naming the argument.get_pca_loadings()andaugment_pca()withn_components = 0returned PC1, since1:0isc(1, 0), andget_pca_loadings(n_components = 5)on a four-component PCA returned all four;n_componentsmust now be between 1 and the number of components.tidy_cutree(k = 2:3)returned 100 rows
The notes are cut short here.