Commit 2cca8283 authored by Laurae's avatar Laurae Committed by Guolin Ke
Browse files

Swap integers/numerics naming (#563)

* Fix https://github.com/Microsoft/LightGBM/pull/561

* GitHub local broke, uploading on browser (R-package)

* GitHub local broke, uploading on browser (R-package)
parent 7517eefa
#' Data preparator for LightGBM datasets (integer)
#' Data preparator for LightGBM datasets (numeric)
#'
#' Attempts to prepare a clean dataset to prepare to put in a lgb.Dataset. Factors and characters are converted to numeric (specifically: integer). Please use \code{lgb.prepare_rules} if you want to apply this transformation to other datasets.
#' Attempts to prepare a clean dataset to prepare to put in a lgb.Dataset. Factors and characters are converted to numeric without integers. Please use \code{lgb.prepare_rules} if you want to apply this transformation to other datasets.
#'
#' @param data A data.frame or data.table to prepare.
#'
......@@ -19,13 +19,13 @@
#' # $ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
#' # $ Species : Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 ...
#'
#' str(lgb.prepare(data = iris)) # Convert all factors/chars to integer
#' str(lgb.prepare(data = iris)) # Convert all factors/chars to numeric
#' # 'data.frame': 150 obs. of 5 variables:
#' # $ Sepal.Length: num 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...
#' # $ Sepal.Width : num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
#' # $ Petal.Length: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
#' # $ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
#' # $ Species : int 1 1 1 1 1 1 1 1 1 1 ...
#' # $ Species : num 1 1 1 1 1 1 1 1 1 1 ...
#'
#' # When lightgbm package is installed, and you do not want to load it
#' # You can still use the function!
......@@ -36,8 +36,7 @@
#' # $ Sepal.Width : num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
#' # $ Petal.Length: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
#' # $ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
#' # $ Species : int 1 1 1 1 1 1 1 1 1 1 ...
#'
#' # $ Species : num 1 1 1 1 1 1 1 1 1 1 ...
#' }
#'
#' @export
......@@ -52,13 +51,13 @@ lgb.prepare <- function(data) {
# Convert characters to factors only (we can change them to numeric after)
is_char <- which(list_classes == "character")
if (length(is_char) > 0) {
data[, (is_char) := lapply(.SD, function(x) {as.integer(as.factor(x))}), .SDcols = is_char]
data[, (is_char) := lapply(.SD, function(x) {as.numeric(as.factor(x))}), .SDcols = is_char]
}
# Convert factors to numeric (integer is more efficient actually)
is_fact <- c(which(list_classes == "factor"), is_char)
if (length(is_fact) > 0) {
data[, (is_fact) := lapply(.SD, function(x) {as.integer(x)}), .SDcols = is_fact]
data[, (is_fact) := lapply(.SD, function(x) {as.numeric(x)}), .SDcols = is_fact]
}
} else {
......@@ -72,19 +71,19 @@ lgb.prepare <- function(data) {
# Convert characters to factors to numeric (integer is more efficient actually)
is_char <- which(list_classes == "character")
if (length(is_char) > 0) {
data[is_char] <- lapply(data[is_char], function(x) {as.integer(as.factor(x))})
data[is_char] <- lapply(data[is_char], function(x) {as.numeric(as.factor(x))})
}
# Convert factors to numeric (integer is more efficient actually)
is_fact <- which(list_classes == "factor")
if (length(is_fact) > 0) {
data[is_fact] <- lapply(data[is_fact], function(x) {as.integer(x)})
data[is_fact] <- lapply(data[is_fact], function(x) {as.numeric(x)})
}
} else {
# What do you think you are doing here? Throw error.
stop("lgb.prepare: you provided ", paste(class(data), collapse = " & "), " but data should have class data.frame")
stop("lgb.prepare2: you provided ", paste(class(data), collapse = " & "), " but data should have class data.frame")
}
......
#' Data preparator for LightGBM datasets (numeric)
#' Data preparator for LightGBM datasets (integer)
#'
#' Attempts to prepare a clean dataset to prepare to put in a lgb.Dataset. Factors and characters are converted to numeric without integers. This is useful if you have a specific need for numeric dataset instead of integer dataset. There are programs which do not support integer-only input. Consider this is a fallback solution if you cannot use integers. Please use \code{lgb.prepare_rules2} if you want to apply this transformation to other datasets.
#' Attempts to prepare a clean dataset to prepare to put in a lgb.Dataset. Factors and characters are converted to numeric (specifically: integer). Please use \code{lgb.prepare_rules2} if you want to apply this transformation to other datasets. This is useful if you have a specific need for integer dataset instead of numeric dataset. Note that there are programs which do not support integer-only input. Consider this as a half memory technique which is dangerous, especially for LightGBM.
#'
#' @param data A data.frame or data.table to prepare.
#'
......@@ -19,13 +19,13 @@
#' # $ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
#' # $ Species : Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 ...
#'
#' str(lgb.prepare2(data = iris)) # Convert all factors/chars to numeric
#' str(lgb.prepare2(data = iris)) # Convert all factors/chars to integer
#' # 'data.frame': 150 obs. of 5 variables:
#' # $ Sepal.Length: num 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...
#' # $ Sepal.Width : num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
#' # $ Petal.Length: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
#' # $ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
#' # $ Species : num 1 1 1 1 1 1 1 1 1 1 ...
#' # $ Species : int 1 1 1 1 1 1 1 1 1 1 ...
#'
#' # When lightgbm package is installed, and you do not want to load it
#' # You can still use the function!
......@@ -36,7 +36,8 @@
#' # $ Sepal.Width : num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
#' # $ Petal.Length: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
#' # $ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
#' # $ Species : num 1 1 1 1 1 1 1 1 1 1 ...
#' # $ Species : int 1 1 1 1 1 1 1 1 1 1 ...
#'
#' }
#'
#' @export
......@@ -51,13 +52,13 @@ lgb.prepare2 <- function(data) {
# Convert characters to factors only (we can change them to numeric after)
is_char <- which(list_classes == "character")
if (length(is_char) > 0) {
data[, (is_char) := lapply(.SD, function(x) {as.numeric(as.factor(x))}), .SDcols = is_char]
data[, (is_char) := lapply(.SD, function(x) {as.integer(as.factor(x))}), .SDcols = is_char]
}
# Convert factors to numeric (integer is more efficient actually)
is_fact <- c(which(list_classes == "factor"), is_char)
if (length(is_fact) > 0) {
data[, (is_fact) := lapply(.SD, function(x) {as.numeric(x)}), .SDcols = is_fact]
data[, (is_fact) := lapply(.SD, function(x) {as.integer(x)}), .SDcols = is_fact]
}
} else {
......@@ -71,19 +72,19 @@ lgb.prepare2 <- function(data) {
# Convert characters to factors to numeric (integer is more efficient actually)
is_char <- which(list_classes == "character")
if (length(is_char) > 0) {
data[is_char] <- lapply(data[is_char], function(x) {as.numeric(as.factor(x))})
data[is_char] <- lapply(data[is_char], function(x) {as.integer(as.factor(x))})
}
# Convert factors to numeric (integer is more efficient actually)
is_fact <- which(list_classes == "factor")
if (length(is_fact) > 0) {
data[is_fact] <- lapply(data[is_fact], function(x) {as.numeric(x)})
data[is_fact] <- lapply(data[is_fact], function(x) {as.integer(x)})
}
} else {
# What do you think you are doing here? Throw error.
stop("lgb.prepare2: you provided ", paste(class(data), collapse = " & "), " but data should have class data.frame")
stop("lgb.prepare: you provided ", paste(class(data), collapse = " & "), " but data should have class data.frame")
}
......
#' Data preparator for LightGBM datasets with rules (integer)
#' Data preparator for LightGBM datasets with rules (numeric)
#'
#' Attempts to prepare a clean dataset to prepare to put in a lgb.Dataset. Factors and characters are converted to numeric (specifically: integer). In addition, keeps rules created so you can convert other datasets using this converter.
#' Attempts to prepare a clean dataset to prepare to put in a lgb.Dataset. Factors and characters are converted to numeric. In addition, keeps rules created so you can convert other datasets using this converter.
#'
#' @param data A data.frame or data.table to prepare.
#' @param rules A set of rules from the data preparator, if already used.
......@@ -27,7 +27,7 @@
#' # $ Sepal.Width : num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
#' # $ Petal.Length: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
#' # $ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
#' # $ Species : int 1 1 1 1 1 1 1 1 1 1 ...
#' # $ Species : num 1 1 1 1 1 1 1 1 1 1 ...
#'
#' data(iris) # Erase iris dataset
#' iris$Species[1] <- "NEW FACTOR" # Introduce junk factor (NA)
......@@ -54,9 +54,9 @@
#' data(iris) # Erase iris dataset
#'
#' # We remapped values differently
#' personal_rules <- list(Species = c("setosa" = 3L,
#' "versicolor" = 2L,
#' "virginica" = 1L))
#' personal_rules <- list(Species = c("setosa" = 3,
#' "versicolor" = 2,
#' "virginica" = 1))
#' newest_iris <- lgb.prepare_rules(data = iris, rules = personal_rules)
#' str(newest_iris$data) # SUCCESS!
#' # 'data.frame': 150 obs. of 5 variables:
......@@ -64,7 +64,7 @@
#' # $ Sepal.Width : num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
#' # $ Petal.Length: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
#' # $ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
#' # $ Species : int 3 3 3 3 3 3 3 3 3 3 ...
#' # $ Species : num 3 3 3 3 3 3 3 3 3 3 ...
#'
#' }
#'
......@@ -81,7 +81,7 @@ lgb.prepare_rules <- function(data, rules = NULL) {
for (i in names(rules)) {
set(data, j = i, value = unname(rules[[i]][data[[i]]]))
data[[i]][is.na(data[[i]])] <- 0L # Overwrite NAs by 0s as integer
data[[i]][is.na(data[[i]])] <- 0 # Overwrite NAs by 0s
}
......@@ -106,10 +106,11 @@ lgb.prepare_rules <- function(data, rules = NULL) {
# Get unique values
if (class(mini_data) == "factor") {
mini_unique <- levels(mini_data) # Factor
mini_numeric <- 1:length(mini_unique) # Respect ordinal if needed
mini_numeric <- numeric(length(mini_unique))
mini_numeric[1:length(mini_unique)] <- 1:length(mini_unique) # Respect ordinal if needed
} else {
mini_unique <- as.factor(unique(mini_data)) # Character
mini_numeric <- as.integer(mini_unique) # No respect of ordinality
mini_numeric <- as.numeric(mini_unique) # No respect of ordinality
}
# Create ruleset
......@@ -135,7 +136,7 @@ lgb.prepare_rules <- function(data, rules = NULL) {
for (i in names(rules)) {
data[[i]] <- unname(rules[[i]][data[[i]]])
data[[i]][is.na(data[[i]])] <- 0L # Overwrite NAs by 0s as integer
data[[i]][is.na(data[[i]])] <- 0 # Overwrite NAs by 0s
}
......@@ -163,10 +164,11 @@ lgb.prepare_rules <- function(data, rules = NULL) {
# Get unique values
if (class(mini_data) == "factor") {
mini_unique <- levels(mini_data) # Factor
mini_numeric <- 1:length(mini_unique) # Respect ordinal if needed
mini_numeric <- numeric(length(mini_unique))
mini_numeric[1:length(mini_unique)] <- 1:length(mini_unique) # Respect ordinal if needed
} else {
mini_unique <- as.factor(unique(mini_data)) # Character
mini_numeric <- as.integer(mini_unique) # No respect of ordinality
mini_numeric <- as.numeric(mini_unique) # No respect of ordinality
}
# Create ruleset
......
#' Data preparator for LightGBM datasets with rules (numeric)
#' Data preparator for LightGBM datasets with rules (integer)
#'
#' Attempts to prepare a clean dataset to prepare to put in a lgb.Dataset. Factors and characters are converted to numeric. In addition, keeps rules created so you can convert other datasets using this converter. This is useful if you have a specific need for numeric dataset instead of integer dataset. There are programs which do not support integer-only input. Consider this is a fallback solution if you cannot use integers.
#' Attempts to prepare a clean dataset to prepare to put in a lgb.Dataset. Factors and characters are converted to numeric (specifically: integer). In addition, keeps rules created so you can convert other datasets using this converter. This is useful if you have a specific need for integer dataset instead of numeric dataset. Note that there are programs which do not support integer-only input. Consider this as a half memory technique which is dangerous, especially for LightGBM.
#'
#' @param data A data.frame or data.table to prepare.
#' @param rules A set of rules from the data preparator, if already used.
......@@ -27,7 +27,7 @@
#' # $ Sepal.Width : num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
#' # $ Petal.Length: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
#' # $ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
#' # $ Species : num 1 1 1 1 1 1 1 1 1 1 ...
#' # $ Species : int 1 1 1 1 1 1 1 1 1 1 ...
#'
#' data(iris) # Erase iris dataset
#' iris$Species[1] <- "NEW FACTOR" # Introduce junk factor (NA)
......@@ -54,9 +54,9 @@
#' data(iris) # Erase iris dataset
#'
#' # We remapped values differently
#' personal_rules <- list(Species = c("setosa" = 3,
#' "versicolor" = 2,
#' "virginica" = 1))
#' personal_rules <- list(Species = c("setosa" = 3L,
#' "versicolor" = 2L,
#' "virginica" = 1L))
#' newest_iris <- lgb.prepare_rules2(data = iris, rules = personal_rules)
#' str(newest_iris$data) # SUCCESS!
#' # 'data.frame': 150 obs. of 5 variables:
......@@ -64,7 +64,7 @@
#' # $ Sepal.Width : num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
#' # $ Petal.Length: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
#' # $ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
#' # $ Species : num 3 3 3 3 3 3 3 3 3 3 ...
#' # $ Species : int 3 3 3 3 3 3 3 3 3 3 ...
#'
#' }
#'
......@@ -81,7 +81,7 @@ lgb.prepare_rules2 <- function(data, rules = NULL) {
for (i in names(rules)) {
set(data, j = i, value = unname(rules[[i]][data[[i]]]))
data[[i]][is.na(data[[i]])] <- 0 # Overwrite NAs by 0s
data[[i]][is.na(data[[i]])] <- 0L # Overwrite NAs by 0s as integer
}
......@@ -106,11 +106,10 @@ lgb.prepare_rules2 <- function(data, rules = NULL) {
# Get unique values
if (class(mini_data) == "factor") {
mini_unique <- levels(mini_data) # Factor
mini_numeric <- numeric(length(mini_unique))
mini_numeric[1:length(mini_unique)] <- 1:length(mini_unique) # Respect ordinal if needed
mini_numeric <- 1:length(mini_unique) # Respect ordinal if needed
} else {
mini_unique <- as.factor(unique(mini_data)) # Character
mini_numeric <- as.numeric(mini_unique) # No respect of ordinality
mini_numeric <- as.integer(mini_unique) # No respect of ordinality
}
# Create ruleset
......@@ -136,7 +135,7 @@ lgb.prepare_rules2 <- function(data, rules = NULL) {
for (i in names(rules)) {
data[[i]] <- unname(rules[[i]][data[[i]]])
data[[i]][is.na(data[[i]])] <- 0 # Overwrite NAs by 0s
data[[i]][is.na(data[[i]])] <- 0L # Overwrite NAs by 0s as integer
}
......@@ -164,11 +163,10 @@ lgb.prepare_rules2 <- function(data, rules = NULL) {
# Get unique values
if (class(mini_data) == "factor") {
mini_unique <- levels(mini_data) # Factor
mini_numeric <- numeric(length(mini_unique))
mini_numeric[1:length(mini_unique)] <- 1:length(mini_unique) # Respect ordinal if needed
mini_numeric <- 1:length(mini_unique) # Respect ordinal if needed
} else {
mini_unique <- as.factor(unique(mini_data)) # Character
mini_numeric <- as.numeric(mini_unique) # No respect of ordinality
mini_numeric <- as.integer(mini_unique) # No respect of ordinality
}
# Create ruleset
......
......@@ -2,7 +2,7 @@
% Please edit documentation in R/lgb.prepare.R
\name{lgb.prepare}
\alias{lgb.prepare}
\title{Data preparator for LightGBM datasets (integer)}
\title{Data preparator for LightGBM datasets (numeric)}
\usage{
lgb.prepare(data)
}
......@@ -13,7 +13,7 @@ lgb.prepare(data)
The cleaned dataset. It must be converted to a matrix format (\code{as.matrix}) for input in lgb.Dataset.
}
\description{
Attempts to prepare a clean dataset to prepare to put in a lgb.Dataset. Factors and characters are converted to numeric (specifically: integer). Please use \code{lgb.prepare_rules} if you want to apply this transformation to other datasets.
Attempts to prepare a clean dataset to prepare to put in a lgb.Dataset. Factors and characters are converted to numeric without integers. Please use \code{lgb.prepare_rules} if you want to apply this transformation to other datasets.
}
\examples{
\dontrun{
......@@ -28,13 +28,13 @@ Attempts to prepare a clean dataset to prepare to put in a lgb.Dataset. Factors
# $ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
# $ Species : Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 ...
str(lgb.prepare(data = iris)) # Convert all factors/chars to integer
str(lgb.prepare(data = iris)) # Convert all factors/chars to numeric
# 'data.frame': 150 obs. of 5 variables:
# $ Sepal.Length: num 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...
# $ Sepal.Width : num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
# $ Petal.Length: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
# $ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
# $ Species : int 1 1 1 1 1 1 1 1 1 1 ...
# $ Species : num 1 1 1 1 1 1 1 1 1 1 ...
# When lightgbm package is installed, and you do not want to load it
# You can still use the function!
......@@ -45,8 +45,7 @@ Attempts to prepare a clean dataset to prepare to put in a lgb.Dataset. Factors
# $ Sepal.Width : num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
# $ Petal.Length: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
# $ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
# $ Species : int 1 1 1 1 1 1 1 1 1 1 ...
# $ Species : num 1 1 1 1 1 1 1 1 1 1 ...
}
}
......@@ -2,7 +2,7 @@
% Please edit documentation in R/lgb.prepare2.R
\name{lgb.prepare2}
\alias{lgb.prepare2}
\title{Data preparator for LightGBM datasets (numeric)}
\title{Data preparator for LightGBM datasets (integer)}
\usage{
lgb.prepare2(data)
}
......@@ -13,7 +13,7 @@ lgb.prepare2(data)
The cleaned dataset. It must be converted to a matrix format (\code{as.matrix}) for input in lgb.Dataset.
}
\description{
Attempts to prepare a clean dataset to prepare to put in a lgb.Dataset. Factors and characters are converted to numeric without integers. This is useful if you have a specific need for numeric dataset instead of integer dataset. There are programs which do not support integer-only input. Consider this is a fallback solution if you cannot use integers. Please use \code{lgb.prepare_rules2} if you want to apply this transformation to other datasets.
Attempts to prepare a clean dataset to prepare to put in a lgb.Dataset. Factors and characters are converted to numeric (specifically: integer). Please use \code{lgb.prepare_rules2} if you want to apply this transformation to other datasets. This is useful if you have a specific need for integer dataset instead of numeric dataset. Note that there are programs which do not support integer-only input. Consider this as a half memory technique which is dangerous, especially for LightGBM.
}
\examples{
\dontrun{
......@@ -28,13 +28,13 @@ Attempts to prepare a clean dataset to prepare to put in a lgb.Dataset. Factors
# $ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
# $ Species : Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 ...
str(lgb.prepare2(data = iris)) # Convert all factors/chars to numeric
str(lgb.prepare2(data = iris)) # Convert all factors/chars to integer
# 'data.frame': 150 obs. of 5 variables:
# $ Sepal.Length: num 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...
# $ Sepal.Width : num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
# $ Petal.Length: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
# $ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
# $ Species : num 1 1 1 1 1 1 1 1 1 1 ...
# $ Species : int 1 1 1 1 1 1 1 1 1 1 ...
# When lightgbm package is installed, and you do not want to load it
# You can still use the function!
......@@ -45,7 +45,8 @@ Attempts to prepare a clean dataset to prepare to put in a lgb.Dataset. Factors
# $ Sepal.Width : num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
# $ Petal.Length: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
# $ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
# $ Species : num 1 1 1 1 1 1 1 1 1 1 ...
# $ Species : int 1 1 1 1 1 1 1 1 1 1 ...
}
}
......@@ -2,7 +2,7 @@
% Please edit documentation in R/lgb.prepare_rules.R
\name{lgb.prepare_rules}
\alias{lgb.prepare_rules}
\title{Data preparator for LightGBM datasets with rules (integer)}
\title{Data preparator for LightGBM datasets with rules (numeric)}
\usage{
lgb.prepare_rules(data, rules = NULL)
}
......@@ -15,7 +15,7 @@ lgb.prepare_rules(data, rules = NULL)
A list with the cleaned dataset (\code{data}) and the rules (\code{rules}). The data must be converted to a matrix format (\code{as.matrix}) for input in lgb.Dataset.
}
\description{
Attempts to prepare a clean dataset to prepare to put in a lgb.Dataset. Factors and characters are converted to numeric (specifically: integer). In addition, keeps rules created so you can convert other datasets using this converter.
Attempts to prepare a clean dataset to prepare to put in a lgb.Dataset. Factors and characters are converted to numeric. In addition, keeps rules created so you can convert other datasets using this converter.
}
\examples{
\dontrun{
......@@ -37,7 +37,7 @@ Attempts to prepare a clean dataset to prepare to put in a lgb.Dataset. Factors
# $ Sepal.Width : num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
# $ Petal.Length: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
# $ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
# $ Species : int 1 1 1 1 1 1 1 1 1 1 ...
# $ Species : num 1 1 1 1 1 1 1 1 1 1 ...
data(iris) # Erase iris dataset
iris$Species[1] <- "NEW FACTOR" # Introduce junk factor (NA)
......@@ -64,9 +64,9 @@ Attempts to prepare a clean dataset to prepare to put in a lgb.Dataset. Factors
data(iris) # Erase iris dataset
# We remapped values differently
personal_rules <- list(Species = c("setosa" = 3L,
"versicolor" = 2L,
"virginica" = 1L))
personal_rules <- list(Species = c("setosa" = 3,
"versicolor" = 2,
"virginica" = 1))
newest_iris <- lgb.prepare_rules(data = iris, rules = personal_rules)
str(newest_iris$data) # SUCCESS!
# 'data.frame': 150 obs. of 5 variables:
......@@ -74,7 +74,7 @@ Attempts to prepare a clean dataset to prepare to put in a lgb.Dataset. Factors
# $ Sepal.Width : num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
# $ Petal.Length: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
# $ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
# $ Species : int 3 3 3 3 3 3 3 3 3 3 ...
# $ Species : num 3 3 3 3 3 3 3 3 3 3 ...
}
......
......@@ -2,7 +2,7 @@
% Please edit documentation in R/lgb.prepare_rules2.R
\name{lgb.prepare_rules2}
\alias{lgb.prepare_rules2}
\title{Data preparator for LightGBM datasets with rules (numeric)}
\title{Data preparator for LightGBM datasets with rules (integer)}
\usage{
lgb.prepare_rules2(data, rules = NULL)
}
......@@ -15,7 +15,7 @@ lgb.prepare_rules2(data, rules = NULL)
A list with the cleaned dataset (\code{data}) and the rules (\code{rules}). The data must be converted to a matrix format (\code{as.matrix}) for input in lgb.Dataset.
}
\description{
Attempts to prepare a clean dataset to prepare to put in a lgb.Dataset. Factors and characters are converted to numeric. In addition, keeps rules created so you can convert other datasets using this converter. This is useful if you have a specific need for numeric dataset instead of integer dataset. There are programs which do not support integer-only input. Consider this is a fallback solution if you cannot use integers.
Attempts to prepare a clean dataset to prepare to put in a lgb.Dataset. Factors and characters are converted to numeric (specifically: integer). In addition, keeps rules created so you can convert other datasets using this converter. This is useful if you have a specific need for integer dataset instead of numeric dataset. Note that there are programs which do not support integer-only input. Consider this as a half memory technique which is dangerous, especially for LightGBM.
}
\examples{
\dontrun{
......@@ -37,7 +37,7 @@ Attempts to prepare a clean dataset to prepare to put in a lgb.Dataset. Factors
# $ Sepal.Width : num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
# $ Petal.Length: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
# $ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
# $ Species : num 1 1 1 1 1 1 1 1 1 1 ...
# $ Species : int 1 1 1 1 1 1 1 1 1 1 ...
data(iris) # Erase iris dataset
iris$Species[1] <- "NEW FACTOR" # Introduce junk factor (NA)
......@@ -64,9 +64,9 @@ Attempts to prepare a clean dataset to prepare to put in a lgb.Dataset. Factors
data(iris) # Erase iris dataset
# We remapped values differently
personal_rules <- list(Species = c("setosa" = 3,
"versicolor" = 2,
"virginica" = 1))
personal_rules <- list(Species = c("setosa" = 3L,
"versicolor" = 2L,
"virginica" = 1L))
newest_iris <- lgb.prepare_rules2(data = iris, rules = personal_rules)
str(newest_iris$data) # SUCCESS!
# 'data.frame': 150 obs. of 5 variables:
......@@ -74,7 +74,7 @@ Attempts to prepare a clean dataset to prepare to put in a lgb.Dataset. Factors
# $ Sepal.Width : num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
# $ Petal.Length: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
# $ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
# $ Species : num 3 3 3 3 3 3 3 3 3 3 ...
# $ Species : int 3 3 3 3 3 3 3 3 3 3 ...
}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment