{SLmetrics}: scalable and memory efficient AI/ML performance evaluation in R

On December 3rd, 2024, a post about the release of {SLmetrics} was published. Today, January 11th, 2025, version 0.3-1 has been released and comes with many new features. Among these are weighted classification and regression metrics, OpenMP support and a wide array of new evaluation metrics.

In this blog post, I will benchmark {SLmetrics} and demostrate how it compares to the similar R packages {MLmetrics} and {yardstick} in terms execution time and memory efficiency – essential determinants for scalability and efficiency.

Benchmark Function

To run the benchmark of {SLmetrics}, {MLmetrics} and {yardstick}, I will use {bench} which measures the median execution time and memory efficiency. Below I have created a wrapper function:

## benchmark function
benchmark <- function(
  ..., 
  m = 10) {
  library(magrittr)
  # 1) create list
  # for storing values
  performance <- list()

  for (i in 1:m) {

     # 1) run the benchmarks
    results <- bench::mark(
      ...,
      iterations = 10,
      check = FALSE
    )

    # 2) extract values
    # and calculate medians
    performance$time[[i]]  <- setNames(
        lapply(results$time, mean), 
        results$expression
        )

    performance$memory[[i]] <- setNames(
        lapply(results$memory, function(x) {
             sum(x$bytes, na.rm = TRUE)}
             ), results$expression)

    performance$n_gc[[i]] <- setNames(
        lapply(results$n_gc, sum), results$expression
        )

  }

  purrr::pmap_dfr(
  list(performance$time, performance$memory, performance$n_gc), 
  ~{
    tibble::tibble(
      expression = names(..1),
      time = unlist(..1),
      memory = unlist(..2),
      n_gc = unlist(..3)
    )
  }
) %>%
  dplyr::mutate(expression = factor(expression, levels = unique(expression))) %>%
  dplyr::group_by(expression) %>%
  dplyr::filter(dplyr::row_number() > 1) %>%
  dplyr::summarize(
    execution_time = bench::as_bench_time(median(time)),
    memory_usage = bench::as_bench_bytes(median(memory)),
    gc_calls = median(n_gc),
    .groups = "drop"
  )

}

The wrapper function runs 10 x 10 benchmarks of each passed function – it discards the first run to allow the functions to warm up, before the benchmarks are recorded.

All values are averaged across runs and then presented as the median runtime, median memory usage and median number of gc()-calls during the benchmark.

Benchmarking {SLmetrics}

Bechmarking with and without OpenMP

In the first set of benchmarks, I will demonstrate the new OpenMP feature that has been shipped with version 0.3-1. For the benchmark, we will compare the execution time and memory efficiency of computing a 3×3 confusion matrix on two vectors of length 10,000,000 with and without OpenMP. The source code and results are shown below:

## 1) set seed
set.seed(1903)

## 2) define values
## for classes
actual <- factor(sample(letters[1:3], 1e7, TRUE))
predicted <- factor(sample(letters[1:3], 1e7, TRUE))

## 3) benchmark with OpenMP
SLmetrics::setUseOpenMP(TRUE)
#> OpenMP usage set to: enabled

benchmark(`{With OpenMP}` = SLmetrics::cmatrix(actual, predicted))
#> # A tibble: 1 × 4
#>   expression    execution_time memory_usage gc_calls
#>   <fct>               <bch:tm>    <bch:byt>    <dbl>
#> 1 {With OpenMP}            1ms           0B        0

## 4) benchmark without OpenMP
SLmetrics::setUseOpenMP(FALSE)
#> OpenMP usage set to: disabled

benchmark(`{Without OpenMP}`  = SLmetrics::cmatrix(actual, predicted))
#> # A tibble: 1 × 4
#>   expression       execution_time memory_usage gc_calls
#>   <fct>                  <bch:tm>    <bch:byt>    <dbl>
#> 1 {Without OpenMP}         6.27ms           0B        0

The confusion matrix is computed in less than a millisecond and around six milliseconds with and without OpenMP, respectively. In both cases, it uses zero or near-zero memory.

Benchmarking against {MLmetrics} and {yardstick}

In the second set of benchmarks, I will compare the execution time and memory efficiency of {SLmetrics} against {MLmetrics} and {yardstick}. The source code and results are shown below:

## 1) define classes
set.seed(1903)
fct_actual    <- factor(sample(letters[1:3], size = 1e7, replace = TRUE))
fct_predicted <- factor(sample(letters[1:3], size = 1e7, replace = TRUE))

## 2) perform benchmark
benchmark(
    `{SLmetrics}` = SLmetrics::cmatrix(fct_actual, fct_predicted),
    `{MLmetrics}` = MLmetrics::ConfusionMatrix(fct_predicted, fct_actual),
    `{yardstick}` = yardstick::conf_mat(table(fct_actual, fct_predicted))
)
#> # A tibble: 3 × 4
#>   expression  execution_time memory_usage gc_calls
#>   <fct>             <bch:tm>    <bch:byt>    <dbl>
#> 1 {SLmetrics}         6.34ms           0B        0
#> 2 {MLmetrics}       344.13ms        381MB       19
#> 3 {yardstick}       343.75ms        381MB       19

{SLmetrics} is roughly 60 times faster than both, and significantly more memory efficient as demonstrated by memory_usage and gc_calls. In this perspective, {SLmetrics} is more efficient and scalable than both packages as the memory usage is basically linear. See below:

## 1) define classes
set.seed(1903)
fct_actual    <- factor(sample(letters[1:3], size = 2e7, replace = TRUE))
fct_predicted <- factor(sample(letters[1:3], size = 2e7, replace = TRUE))

## 2) perform benchmark
benchmark(
    `{SLmetrics}` = SLmetrics::cmatrix(fct_actual, fct_predicted),
    `{MLmetrics}` = MLmetrics::ConfusionMatrix(fct_predicted, fct_actual),
    `{yardstick}` = yardstick::conf_mat(table(fct_actual, fct_predicted))
)
#> # A tibble: 3 × 4
#>   expression  execution_time memory_usage gc_calls
#>   <fct>             <bch:tm>    <bch:byt>    <dbl>
#> 1 {SLmetrics}         12.3ms           0B        0
#> 2 {MLmetrics}        648.5ms        763MB       19
#> 3 {yardstick}        654.7ms        763MB       19

{SLmetrics} can process 60x the data in the same time it takes {MLmetrics} and {yardstick} to process 40,000,000 data-points – without any additional memory cost.

Summary

The benchmarks suggests that {SLmetrics} is a strong contender to the more established packages {MLmetrics} and {yardstick} in terms of scalability, memory efficiency and speed.

Installing {SLmetrics}

{SLmetrics} is still under development and is therefore not on CRAN. But the latest release can be installed using {devtools}. A development version is also available for those living on the edge. See below:

Stable version

## install stable release
devtools::install_github(
  repo = 'https://github.com/serkor1/SLmetrics@*release',
  ref  = 'main'
)

Development version

## install development version
devtools::install_github(
  repo = 'https://github.com/serkor1/SLmetrics',
  ref  = 'development'
)

If you made it this far: Thank you for reading the blog post, and feel free to leave a comment here or in the repository.

Spatial modelling with GAMs in R workshop

Join our workshop on Spatial modelling with GAMs in R, which is a part of our workshops for Ukraine series! 


Here’s some more info: 


Title: Spatial modelling with GAMs in R


Date: Thursday, January 30th, 18:00 – 20:00 CET (Rome, Berlin, Paris timezone) 


Speaker: Sophie Lee is a statistician and educator who teaches a range of statistics and R coding courses to non-statisticians. Her goal is to provide accessible, engaging training to prove that statistics does not need to be scary! She has a PhD in Spatio-temporal Epidemiology from LSHTM and is a Fellow of the Higher Education Academy. Her research interests lie in spatial data analysis, planetary health, and Bayesian modelling.


Description: When modelling spatial data we are generally unable to use traditional modelling approaches, such as generalised linear models (GLMs), as the assumption that observations are independent of one another may be invalid. This is due to underlying similarities, including unobservable behaviours, climate, and other characteristics, that are shared between observations close to one another. There are extensions of GLMs that can be used to overcome this lack of independence between observations, often with the inclusion of structured random effects, that try to take account of the underlying spatial relationships. The issue arises when deciding how to structure these spatial random effects: how close is close enough to consider observations no longer independent?

This workshop introduces generalised additive models (GAMs) as a method for generating the underlying spatial structure needed to define spatially structured random effects. We will see how penalised smoothing splines can be applied to coordinates to generate a spatial plane with minimal user assumptions. This ensures the spatial model is relevant and unique to the setting being studied. Using the mgcv package in R, we will apply this approach to real-world data, incorporating the flexible spatial structure into a random effects model, which then can be interpreted similarly to any other spatial model.


Minimal registration fee: 20 euro (or 20 USD or 800 UAH)

Please note that the registration confirmation email will be sent 1 day before the workshop.

How can I register?



  • Save your donation receipt (after the donation is processed, there is an option to enter your email address on the website to which the donation receipt is sent)

  • Fill in the registration form, attaching a screenshot of a donation receipt (please attach the screenshot of the donation receipt that was emailed to you rather than the page you see after donation).

If you are not personally interested in attending, you can also contribute by sponsoring a participation of a student, who will then be able to participate for free. If you choose to sponsor a student, all proceeds will also go directly to organisations working in Ukraine. You can either sponsor a particular student or you can leave it up to us so that we can allocate the sponsored place to students who have signed up for the waiting list.


How can I sponsor a student?


  • Save your donation receipt (after the donation is processed, there is an option to enter your email address on the website to which the donation receipt is sent)

  • Fill in the sponsorship form, attaching the screenshot of the donation receipt (please attach the screenshot of the donation receipt that was emailed to you rather than the page you see after the donation). You can indicate whether you want to sponsor a particular student or we can allocate this spot ourselves to the students from the waiting list. You can also indicate whether you prefer us to prioritize students from developing countries when assigning place(s) that you sponsored.


If you are a university student and cannot afford the registration fee, you can also sign up for the waiting list here. (Note that you are not guaranteed to participate by signing up for the waiting list).



You can also find more information about this workshop series,  a schedule of our future workshops as well as a list of our past workshops which you can get the recordings & materials here.


Looking forward to seeing you during the workshop!




Latent Growth Curve Models using the Lavaan Package in R workshop

Join our workshop on Latent Growth Curve Models using the Lavaan Package in R, which is a part of our workshops for Ukraine series! 


Here’s some more info: 

Title: Latent Growth Curve Models using the Lavaan Package in R

Date: Thursday, January 16th, 18:00 – 20:00 CET (Rome, Berlin, Paris timezone)

Speaker: Rogier Kievit is Professor of Developmental Neuroscience at the Donders Institute in Nijmegen, where he leads the Lifespan Cognitive Dynamics Lab (https://lifespancognitivedynamics.com/). He studies changes in cognitive abilities across the lifespan using multivariate techniques including factor analysis, growth curve models, mixture models and timeseries analysis. He using R almost every day, especially Lavaan and ggplot, and has contributed to multiple packages (e.g. ggrain, regsem, iced). If you send him exciting longitudinal data there is a real risk he may abandon other more urgent tasks.

Description: Rogier Kievit is Professor of Developmental Neuroscience at the Donders Institute in Nijmegen, where he leads the Lifespan Cognitive Dynamics Lab (https://lifespancognitivedynamics.com/). He studies changes in cognitive abilities across the lifespan using multivariate techniques including factor analysis, growth curve models, mixture models and timeseries analysis. He using R almost every day, especially Lavaan and ggplot, and has contributed to multiple packages (e.g. ggrain, regsem, iced). If you send him exciting longitudinal data there is a real risk he may abandon other more urgent tasks.


Minimal registration fee: 20 euro (or 20 USD or 800 UAH)



Please note that the registration confirmation email will be sent 1 day before the workshop.


How can I register?



  • Save your donation receipt (after the donation is processed, there is an option to enter your email address on the website to which the donation receipt is sent)

  • Fill in the registration form, attaching a screenshot of a donation receipt (please attach the screenshot of the donation receipt that was emailed to you rather than the page you see after donation).

If you are not personally interested in attending, you can also contribute by sponsoring a participation of a student, who will then be able to participate for free. If you choose to sponsor a student, all proceeds will also go directly to organisations working in Ukraine. You can either sponsor a particular student or you can leave it up to us so that we can allocate the sponsored place to students who have signed up for the waiting list.


How can I sponsor a student?


  • Save your donation receipt (after the donation is processed, there is an option to enter your email address on the website to which the donation receipt is sent)

  • Fill in the sponsorship form, attaching the screenshot of the donation receipt (please attach the screenshot of the donation receipt that was emailed to you rather than the page you see after the donation). You can indicate whether you want to sponsor a particular student or we can allocate this spot ourselves to the students from the waiting list. You can also indicate whether you prefer us to prioritize students from developing countries when assigning place(s) that you sponsored.


If you are a university student and cannot afford the registration fee, you can also sign up for the waiting list here. (Note that you are not guaranteed to participate by signing up for the waiting list).



You can also find more information about this workshop series,  a schedule of our future workshops as well as a list of our past workshops which you can get the recordings & materials here.


Looking forward to seeing you during the workshop!

Satellite mapping of surface waters in R

Join our workshop on Satellite mapping of surface waters in R, which is a part of our workshops for Ukraine series! 

Here’s some more info: 

Title: Satellite mapping of surface waters in R

Date: Thursday, January 23rd, 18:00 – 20:00 CET (Rome, Berlin, Paris timezone)

Speaker: Lawrence Vulis is a senior hazard scientist at CoreLogic working on modelling climate impacts to natural hazards and property risk. He regularly works with statistical methods, numerical modelling, and geographic information systems (GIS) to interrogate natural hazard, property/building, and climate data. His background is in hydrology and geomorphology, with prior experience in the satellite imagery based monitoring and classification of coastal landscapes and surface water systems such as beaches, river deltas, and lakes.

Description: Surface waters such as rivers, streams, lakes, and reservoirs are an important source of freshwater and economic activity. Mapping such waters and their seasonal changes is crucial for understanding water resource availability or geomorphic activity. This workshop focuses on the interrogation of optical and multispectral satellite imagery for surface water mapping using R. We will examine different types of satellite imagery and how to extract surface water features. It is recommended but not required to have some basics in understanding geographic information systems (GIS) topics, image processing, and possibly some background in hydrology, geography, or earth science.

Minimal registration fee: 20 euro (or 20 USD or 800 UAH)


Please note that the registration confirmation email will be sent 1 day before the workshop.

How can I register?



  • Save your donation receipt (after the donation is processed, there is an option to enter your email address on the website to which the donation receipt is sent)

  • Fill in the registration form, attaching a screenshot of a donation receipt (please attach the screenshot of the donation receipt that was emailed to you rather than the page you see after donation).

If you are not personally interested in attending, you can also contribute by sponsoring a participation of a student, who will then be able to participate for free. If you choose to sponsor a student, all proceeds will also go directly to organisations working in Ukraine. You can either sponsor a particular student or you can leave it up to us so that we can allocate the sponsored place to students who have signed up for the waiting list.


How can I sponsor a student?


  • Save your donation receipt (after the donation is processed, there is an option to enter your email address on the website to which the donation receipt is sent)

  • Fill in the sponsorship form, attaching the screenshot of the donation receipt (please attach the screenshot of the donation receipt that was emailed to you rather than the page you see after the donation). You can indicate whether you want to sponsor a particular student or we can allocate this spot ourselves to the students from the waiting list. You can also indicate whether you prefer us to prioritize students from developing countries when assigning place(s) that you sponsored.


If you are a university student and cannot afford the registration fee, you can also sign up for the waiting list here. (Note that you are not guaranteed to participate by signing up for the waiting list).



You can also find more information about this workshop series,  a schedule of our future workshops as well as a list of our past workshops which you can get the recordings & materials here.


Looking forward to seeing you during the workshop!

{SLmetrics}: Machine Learning performance evaluation on steroids

Introduction
{SLmetrics} is a low-level R package designed for efficient performance evaluation in supervised AI/ML tasks. By leveraging {Rcpp} and {RcppEigen}, it ensures fast execution and memory efficiency, making it ideal for handling large-scale datasets. Built on the robust S3 class system, {SLmetrics} integrates seamlessly with stable R packages, ensuring reliability and ease of use for developers and data scientists alike.

Why?
{SLmetrics} combines simplicity with exceptional performance, setting it apart from other packages. While it draws inspiration from {MLmetrics} in its intuitive design, it outpaces it in terms of speed, memory efficiency, and the variety of available performance measures. In terms of features, {SLmetrics} offers functionality comparable to {yardstick} and {scikit-learn}, while being significantly faster.

Current benchmarks show that {SLmetrics} is between 20-70 times faster than {yardstick}, {MLmetrics}, and {mlr3measures} (See Figure 1).

Alt Text
Figure 1. Median execution time of a 2×2 confusion matrix using {SLmetrics}, {MLmetrics}, {mlr3measures} and {yardstick}. The source code can be found in the {SLmetrics} repository on Github.
Whether you’re working with simple models or complex machine learning pipelines, {SLmetrics} provides a highly efficient, reliable solution for model evaluation.

Basic usage of {SLmetrics}
Load {SLmetrics},

library(SLmetrics)
We recode the Species variable and convert the problem to a binary classification problem,

# 1) recode Iris
# to binary classification
# problem
iris$species_num <- as.numeric(
  iris$Species == "virginica"
)

# 2) fit the logistic
# regression
model <- glm(
  formula = species_num ~ Sepal.Length + Sepal.Width,
  data    = iris,
  family  = binomial(
    link = "logit"
  )
)

# 3) generate predicted
# classes
response <- predict(model, type = "response")

# 3.1) generate actual
# classes
actual <- factor(
  x = iris$species_num,
  levels = c(1,0),
  labels = c("Virginica", "Others")
)
Construct the precision-recall curve,

# 4) generate precision-recall
# curve
roc <- prROC(
  actual   = actual,
  response = response
)
Visualize the precision-recall curve,

# 5) plot by species
plot(roc)

Summarise to get the area under the curve metric for each class,

# 5.1) summarise
summary(roc)
#> Reciever Operator Characteristics 
#> ================================================================================
#> AUC
#>  - Others: 0.473
#>  - Virginica: 0.764
The precision-recall function also supports custom thresholds,

# 6) provide custom
# threholds
roc <- prROC(
  actual     = actual,
  response   = response,
  thresholds = seq(0, 1, length.out = 4)
)
Visualize the precision-recall curve with custom thresholds,

# 5) plot by species
plot(roc)


Installing {SLmetrics}
The stable release {SLmetrics} can be installed as follows,
devtools::install_github(
  repo = 'https://github.com/serkor1/SLmetrics@*release',
  ref  = 'main'
)
The development version of {SLmetrics} can be installed as follows,
devtools::install_github(
  repo = 'https://github.com/serkor1/SLmetrics',
  ref  = 'development'
)

Get involved with {SLmetrics}
We’re building something exciting with {SLmetrics}, and your contributions can make a real impact!

While {SLmetrics} isn’t on CRAN yet—it’s a work in progress striving for excellence—this is your chance to shape its future. We’re thrilled to offer co-authorship for substantial contributions, recognizing your expertise and effort.

Even smaller improvements will earn you a spot on our contributor list, showcasing your valuable role in enhancing {SLmetrics}. Join us in creating a high-quality tool that benefits the entire R community. Check out the repository and start contributing today!

Crafting Custom and Reproducible PDF Reports with Quarto and Typst in R workshop

Join our workshop on Crafting Custom and Reproducible PDF Reports with Quarto and Typst in R, which is a part of our workshops for Ukraine series! 

Here’s some more info: 

Title: Crafting Custom and Reproducible PDF Reports with Quarto and Typst in R

Date: Thursday, December 19th, 18:00 – 20:00 CEST (Rome, Berlin, Paris timezone)

Speaker: Riva Quiroga is a linguist and educator based in Valparaíso, Chile. She is a Software Sustainability Insitute Fellow, part of the R-Ladies Global Leadership Team, and a Women Techmakers Ambassador.

Description: In this workshop, we will cover the process of creating a fully customized and reproducible PDF report using Quarto and Typst, a modern typesetting and markup language designed for creating high-quality PDFs that offers a more user-friendly alternative to LaTeX. After walking participants through the building blocks of document layout, the workshop will focus on Quarto’s ability to translate CSS properties into Typst properties, a feature that expands the possibilities for customizing a document’s appearance.

Minimal registration fee: 20 euro (or 20 USD or 800 UAH)



Please note that the registration confirmation email will be sent 1 day before the workshop.


How can I register?



  • Save your donation receipt (after the donation is processed, there is an option to enter your email address on the website to which the donation receipt is sent)

  • Fill in the registration form, attaching a screenshot of a donation receipt (please attach the screenshot of the donation receipt that was emailed to you rather than the page you see after donation).

If you are not personally interested in attending, you can also contribute by sponsoring a participation of a student, who will then be able to participate for free. If you choose to sponsor a student, all proceeds will also go directly to organisations working in Ukraine. You can either sponsor a particular student or you can leave it up to us so that we can allocate the sponsored place to students who have signed up for the waiting list.


How can I sponsor a student?


  • Save your donation receipt (after the donation is processed, there is an option to enter your email address on the website to which the donation receipt is sent)

  • Fill in the sponsorship form, attaching the screenshot of the donation receipt (please attach the screenshot of the donation receipt that was emailed to you rather than the page you see after the donation). You can indicate whether you want to sponsor a particular student or we can allocate this spot ourselves to the students from the waiting list. You can also indicate whether you prefer us to prioritize students from developing countries when assigning place(s) that you sponsored.


If you are a university student and cannot afford the registration fee, you can also sign up for the waiting list here. (Note that you are not guaranteed to participate by signing up for the waiting list).



You can also find more information about this workshop series,  a schedule of our future workshops as well as a list of our past workshops which you can get the recordings & materials here.


Looking forward to seeing you during the workshop!

DataCamp’s RADAR: Forward Edition

As 2024 draws to a close, which new trends should you be paying attention to?


Join DataCamp’s flagship conference RADAR: Forward Edition to explore developments in data and AI that will shape 2025 and beyond.

  • Date: November 13, 2024.
  • Location: Online
  • Cost: Free of charge

Experts from top tech organizations will cover topics such as generative AI, how leadership can leverage and transform their organizations with AI, career development in AI, and more.


Register now for free

Introduction to generalized linear models in R workshop

Join our workshop on Introduction to generalized linear models in R, which is a part of our workshops for Ukraine series! 

Here’s some more info: 

Title:  Introduction to generalized linear models in R

Date: Thursday, December 5th, 18:00 – 20:00 CET (Rome, Berlin, Paris timezone)

Speaker: Bodo Winter is Professor of Linguistics at the Dept. of Linguistics and Communication, University of Birmingham, and a UKRI Future Leaders Fellow for the project “Making numbers meaningful”. He uses data science-driven methods to study gesture, iconicity, and numerical communication in language. Bodo has authored Statistics for Linguists: An Introduction Using R and co-founded the Birmingham Statistics for Linguists Summer School.

Description: In this talk, you’ll learn about the fundamentals of generalized linear models, a powerful extension of the general linear model/multiple regression. We will discuss different distributions that can be used to model a diverse range of data-generating processes and how to interpret models that use different link functions. In the hands-on part of the workshop, we’ll work through a dataset for which we are going to use a mixed Poisson regression model, implemented with the package brms. Materials for the hands-on session will be distributed a couple days prior to the workshop.

Minimal registration fee: 20 euro (or 20 USD or 800 UAH)


Please note that the registration confirmation email will be sent 1 day before the workshop.


How can I register?



  • Save your donation receipt (after the donation is processed, there is an option to enter your email address on the website to which the donation receipt is sent)

  • Fill in the registration form, attaching a screenshot of a donation receipt (please attach the screenshot of the donation receipt that was emailed to you rather than the page you see after donation).

If you are not personally interested in attending, you can also contribute by sponsoring a participation of a student, who will then be able to participate for free. If you choose to sponsor a student, all proceeds will also go directly to organisations working in Ukraine. You can either sponsor a particular student or you can leave it up to us so that we can allocate the sponsored place to students who have signed up for the waiting list.


How can I sponsor a student?


  • Save your donation receipt (after the donation is processed, there is an option to enter your email address on the website to which the donation receipt is sent)

  • Fill in the sponsorship form, attaching the screenshot of the donation receipt (please attach the screenshot of the donation receipt that was emailed to you rather than the page you see after the donation). You can indicate whether you want to sponsor a particular student or we can allocate this spot ourselves to the students from the waiting list. You can also indicate whether you prefer us to prioritize students from developing countries when assigning place(s) that you sponsored.


If you are a university student and cannot afford the registration fee, you can also sign up for the waiting list here. (Note that you are not guaranteed to participate by signing up for the waiting list).



You can also find more information about this workshop series,  a schedule of our future workshops as well as a list of our past workshops which you can get the recordings & materials here.


Looking forward to seeing you during the workshop!






DataCamp’s Free Access Week, Nov 4–10

Free Access Week is a free week to explore all of DataCamp’s features for zero cost.


From November 4 (9 AM EST) – November 10 (11.59 PM EST), anyone can access DataCamp Premium features with a free DataCamp account.


Don’t have an account? Sign up here, and you’ll gain unlimited access until November 10.


What is DataCamp?


From data newbies to advanced practitioners, DataCamp is an online data and AI learning platform that helps over 14 million learners worldwide upskill in new technologies.


All 500+ courses, career tracks, and products are available in-browser, so you don’t need any additional software to access DataCamp.


Whether you’re looking to develop your programming skills, enhance your CV, build AI skills, or upskill your team—Free Access Week gives you unlimited learning for all levels and career ambitions.


Sign Up Here

Free Data and AI Courses with 365 Data Science—Unlimited Access until Nov 21

365 Data Science opens its doors this November!

From November 1 to November 21, 2024 (8 a.m. UTC), enjoy unrestricted access to its entire platform, including a selection of R programming courses and projects.

This offer includes expert-led courses, hands-on projects, and interactive exercises on various data science and AI topics. With flexible, 24/7 access, learners can study at their own pace—making it an excellent opportunity to advance in these fields.
365 Data Science offer free data and AI courses until November 21st.

The Initiative’s Fourth and Biggest Year

As 2024 unfolds, 365 Data Science’s free access initiative enters its fourth consecutive year, reinforcing its dedication to democratizing data science education. This program—which emerged as a response to global lockdowns—has become a pivotal annual event in the data science community.

CEO Ned Krastev emphasizes the initiative’s alignment with industry trends: “As data science continues to shape our world, we’re committed to equipping learners with cutting-edge skills and knowledge.”

The 2023 edition saw remarkable engagement, with over 75,000 participants collectively spending over 3.6 million minutes on the platform and earning over 17,000 certificates. Krastev adds, “The consistent engagement each year reflects a global hunger for knowledge and skills in data science. We’re proud to support learners on their journey to excellence in this field.”

Boost Your Career with Professional Certifications

365 Data Science empowers learners to translate their newly acquired knowledge into tangible career advancements by offering free, authenticated proof of expertise—narrowing the divide between educational achievement and industry recognition.

The program offers diverse certifications encompassing broad career trajectories and niche specializations. These credentials can bolster participants’ profiles in the ever-evolving data science landscape.

Course collections to teach you the skills to become a data scientist, data analyst, or business analyst.

And these certifications are just the beginning of what 365 Data Science offers for free.

R Programming: A Core Focus

365 Data Science recognizes R’s pivotal role in data analysis and visualization, as evidenced by their tailored course offerings:

  • Introduction to R Programming: This foundational course covers syntax, data structures, and basic operations, setting the stage for your R journey.
  • The Complete Data Visualization Course with Python, R, Tableau, and Excel: While comprehensive in scope, this course significantly emphasizes R’s powerful visualization capabilities.

You can also find other vital courses to enhance your use of R and other programming languages, including Statistics, Probability, Statistical Tests in Sales and Marketing, Data Preprocessing, and more.
Interactive exercises to boost your practical data and AI skills

Comprehensive Learning Experience

While R programming is one of their focuses, 365 Data Science offers a wide array of courses covering various aspects of data science and AI:

  • Foundational Skills: Courses in data literacy, strategy, math, and more to build a solid analytical base
  • Programming Languages: Comprehensive courses in Python and SQL to complement your R skills
  • Machine Learning: From basic concepts to advanced algorithms and deep learning
  • Artificial Intelligence: Cutting-edge AI topics, including natural language processing and generative AI
  • Business Applications: Courses that bridge the gap between technical skills and real-world business scenarios

These diverse offerings ensure a well-rounded education in data science and AI.

Beyond Courses: Hands-On Projects & Career Prep

Theory alone isn’t enough in data science. 365 Data Science offers practical projects that let you apply your R skills to real-world scenarios. A standout example includes the Housing Market Data Analysis in R Project, where you’ll use R to dissect and interpret housing market trends. But there is far more to explore on their website.

Mastering technical skills is just one part of pursuing a data science or AI career. You also need to articulate your knowledge and experience during interviews. 365 Data Science has just developed an innovative AI-powered interview preparation tool to help with just that. It offers real-time practice and customizability so you can walk into your next data science or AI interview well-prepared and self-assured.

The #365DataLearningChallenge

To add an element of excitement, 365 Data Science is running a learning challenge alongside the free access period. Participants can earn points by completing courses, projects, and exercises. The top performers can win lifetime platform access, career consultations, and portfolio feedback. So don’t miss this opportunity!

Take Advantage Before November 21

Mark your calendars! This free access window runs from November 1 to November 21, 2024.

Staying competitive is essential in today’s rapidly evolving data and artificial intelligence landscape. This three-week complimentary access to 365 Data Science presents a valuable investment opportunity for your professional growth.

Seize this moment to elevate your career and immerse yourself in data science and AI with 365 Data Science this November.

Begin your journey for free at 365 Data Science.