DATA MINING
Desktop Survival Guide by Graham Williams |
|||||
Binning |
Many algorithms for data mining and before that for machine learning have been developed to deal only with categorial variables. Thus, the ability to turn numeric variables into categoric variables is important.
However, see http://biostat.mc.vanderbilt.edu/twiki/bin/view/Main/CatContinuousfor reasons not to bin.
To divide the range of a numeric variable into intervals, and to then code the values of the variable according to which interval they fall into, thus transforming the variable into a categoric variable, we can use the cut function. In the example below the values are cut into three ranges, and given appropriate labels. As a bonus, the percentage distribution across the three ranges is also given!
> v <- c(1, 1.4, 3, 1.1, 0.3, 0.6, 4,5) > v.cuts <- cut(v, breaks=c(-Inf, 1, 2, Inf), labels=c("Low", "Med", "High")) > v.cuts [1] Low Med High Med Low Low High High Levels: Low Med High > table(v.cuts)/length(v.cuts)*100 v.cuts Low Med High 37.5 25.0 37.5 |
An example of this kind of transformation in practise is given in See Chapter , where the apriori function requires categoric variables.
Binning is in fact a common concept and tools exist to automatically bin data using different strategies. The binning function of the sm package provides basic binning functionality.
> library(sm) > x <- rnorm(100) > y <- cut(x, breaks=binning(x, nbins=3)$breaks, labels=c("Lo", "Med", "Hi")) > y [1] Lo Lo Med Med Med Lo Med Med Med Med Med Lo Lo Med Hi Hi Med Lo [19] Lo Med Lo Hi Lo Med Hi Lo Med Lo Med Lo Med Med Lo Med Med Med [37] Lo Med Med Lo Lo Lo Lo Med Med Med Lo Med Med Med Lo Med Lo Med [55] Med Lo Med Med Med Med Lo Med Med Lo Med Lo Med Med Med Med Lo Med [73] Med Med Med Med Lo Med Lo Med Med Med Lo Med Med Lo Lo Med Lo Lo [91] Lo Med Med Lo Lo Med Med Med Lo Med Levels: Lo Med Hi |
Copyright © Togaware Pty Ltd Support further development through the purchase of the PDF version of the book.