Skip to content

SMOTENC generates new examples of the minority class using nearest neighbors of these cases, and can handle categorical variables


smotenc(df, var, k = 5, over_ratio = 1)



data.frame or tibble. Must have 1 factor variable and remaining numeric variables.


Character, name of variable containing factor variable.


An integer. Number of nearest neighbor that are used to generate the new examples of the minority class.


A numeric value for the ratio of the majority-to-minority frequencies. The default value (1) means that all other levels are sampled up to have the same frequency as the most occurring level. A value of 0.5 would mean that the minority levels will have (at most) (approximately) half as many rows than the majority level.


A data.frame or tibble, depending on type of df.


The parameter neighbors controls the way the new examples are created. For each currently existing minority class example X new examples will be created (this is controlled by the parameter over_ratio as mentioned above). These examples will be generated by using the information from the neighbors nearest neighbor of each example of the minority class. The parameter neighbors controls how many of these neighbor are used. Columns can be numeric and categorical with no missing data.


Chawla, N. V., Bowyer, K. W., Hall, L. O., and Kegelmeyer, W. P. (2002). Smote: Synthetic minority over-sampling technique. Journal of Artificial Intelligence Research, 16:321-357.

See also

step_smotenc() for step function of this method

Other Direct Implementations: adasyn(), bsmote(), nearmiss(), smote(), tomek()


circle_numeric <- circle_example[, c("x", "y", "class")]

res <- smotenc(circle_numeric, var = "class")

res <- smotenc(circle_numeric, var = "class", k = 10)

res <- smotenc(circle_numeric, var = "class", over_ratio = 0.8)