Commit 2035c54b authored by Kirill Sevastyanenko's avatar Kirill Sevastyanenko Committed by Guolin Ke
Browse files

Stylistic changes r package (#184)

* src & callbacks

* lgb.Booster and utils

* cv

* wip lgb.Dataset

* lgb.Dataset

* lgb.Predictor

* lgb.train

* typos

* add flags to facilitate macosx compilation

* fix basic_string template error with clang

* most unfortunate mode of development

* fixup tests

* last test

* roxygen

* roxygen v5.x.x
parent c2ba086c
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
% Please edit documentation in R/lgb.Dataset.R % Please edit documentation in R/lgb.Dataset.R
\name{lgb.Dataset.construct} \name{lgb.Dataset.construct}
\alias{lgb.Dataset.construct} \alias{lgb.Dataset.construct}
\title{Construct Dataset explicit} \title{Construct Dataset explicitly}
\usage{ \usage{
lgb.Dataset.construct(dataset) lgb.Dataset.construct(dataset)
} }
...@@ -10,12 +10,14 @@ lgb.Dataset.construct(dataset) ...@@ -10,12 +10,14 @@ lgb.Dataset.construct(dataset)
\item{dataset}{Object of class \code{lgb.Dataset}} \item{dataset}{Object of class \code{lgb.Dataset}}
} }
\description{ \description{
Construct Dataset explicit Construct Dataset explicitly
} }
\examples{ \examples{
data(agaricus.train, package='lightgbm') \dontrun{
train <- agaricus.train data(agaricus.train, package='lightgbm')
dtrain <- lgb.Dataset(train$data, label=train$label) train <- agaricus.train
lgb.Dataset.construct(dtrain) dtrain <- lgb.Dataset(train$data, label=train$label)
lgb.Dataset.construct(dtrain)
}
} }
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
% Please edit documentation in R/lgb.Dataset.R % Please edit documentation in R/lgb.Dataset.R
\name{lgb.Dataset.create.valid} \name{lgb.Dataset.create.valid}
\alias{lgb.Dataset.create.valid} \alias{lgb.Dataset.create.valid}
\title{Contruct a validation data} \title{Contruct validation data}
\usage{ \usage{
lgb.Dataset.create.valid(dataset, data, info = list(), ...) lgb.Dataset.create.valid(dataset, data, info = list(), ...)
} }
...@@ -19,14 +19,16 @@ lgb.Dataset.create.valid(dataset, data, info = list(), ...) ...@@ -19,14 +19,16 @@ lgb.Dataset.create.valid(dataset, data, info = list(), ...)
constructed dataset constructed dataset
} }
\description{ \description{
Contruct a validation data according to training data Contruct validation data according to training data
} }
\examples{ \examples{
data(agaricus.train, package='lightgbm') \dontrun{
train <- agaricus.train data(agaricus.train, package='lightgbm')
dtrain <- lgb.Dataset(train$data, label=train$label) train <- agaricus.train
data(agaricus.test, package='lightgbm') dtrain <- lgb.Dataset(train$data, label=train$label)
test <- agaricus.test data(agaricus.test, package='lightgbm')
dtest <- lgb.Dataset.create.valid(dtrain, test$data, label=test$label) test <- agaricus.test
dtest <- lgb.Dataset.create.valid(dtrain, test$data, label=test$label)
}
} }
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
% Please edit documentation in R/lgb.Dataset.R % Please edit documentation in R/lgb.Dataset.R
\name{lgb.Dataset.save} \name{lgb.Dataset.save}
\alias{lgb.Dataset.save} \alias{lgb.Dataset.save}
\title{save \code{lgb.Dataset} to binary file} \title{Save \code{lgb.Dataset} to a binary file}
\usage{ \usage{
lgb.Dataset.save(dataset, fname) lgb.Dataset.save(dataset, fname)
} }
...@@ -15,12 +15,14 @@ lgb.Dataset.save(dataset, fname) ...@@ -15,12 +15,14 @@ lgb.Dataset.save(dataset, fname)
passed dataset passed dataset
} }
\description{ \description{
save \code{lgb.Dataset} to binary file Save \code{lgb.Dataset} to a binary file
} }
\examples{ \examples{
data(agaricus.train, package='lightgbm') \dontrun{
train <- agaricus.train data(agaricus.train, package='lightgbm')
dtrain <- lgb.Dataset(train$data, label=train$label) train <- agaricus.train
lgb.Dataset.save(dtrain, "data.bin") dtrain <- lgb.Dataset(train$data, label=train$label)
lgb.Dataset.save(dtrain, "data.bin")
}
} }
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
% Please edit documentation in R/lgb.Dataset.R % Please edit documentation in R/lgb.Dataset.R
\name{lgb.Dataset.set.categorical} \name{lgb.Dataset.set.categorical}
\alias{lgb.Dataset.set.categorical} \alias{lgb.Dataset.set.categorical}
\title{set categorical feature of \code{lgb.Dataset}} \title{Set categorical feature of \code{lgb.Dataset}}
\usage{ \usage{
lgb.Dataset.set.categorical(dataset, categorical_feature) lgb.Dataset.set.categorical(dataset, categorical_feature)
} }
...@@ -15,14 +15,16 @@ lgb.Dataset.set.categorical(dataset, categorical_feature) ...@@ -15,14 +15,16 @@ lgb.Dataset.set.categorical(dataset, categorical_feature)
passed dataset passed dataset
} }
\description{ \description{
set categorical feature of \code{lgb.Dataset} Set categorical feature of \code{lgb.Dataset}
} }
\examples{ \examples{
data(agaricus.train, package='lightgbm') \dontrun{
train <- agaricus.train data(agaricus.train, package='lightgbm')
dtrain <- lgb.Dataset(train$data, label=train$label) train <- agaricus.train
lgb.Dataset.save(dtrain, 'lgb.Dataset.data') dtrain <- lgb.Dataset(train$data, label=train$label)
dtrain <- lgb.Dataset('lgb.Dataset.data') lgb.Dataset.save(dtrain, 'lgb.Dataset.data')
lgb.Dataset.set.categorical(dtrain, 1:2) dtrain <- lgb.Dataset('lgb.Dataset.data')
lgb.Dataset.set.categorical(dtrain, 1:2)
}
} }
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
% Please edit documentation in R/lgb.Dataset.R % Please edit documentation in R/lgb.Dataset.R
\name{lgb.Dataset.set.reference} \name{lgb.Dataset.set.reference}
\alias{lgb.Dataset.set.reference} \alias{lgb.Dataset.set.reference}
\title{set reference of \code{lgb.Dataset}} \title{Set reference of \code{lgb.Dataset}}
\usage{ \usage{
lgb.Dataset.set.reference(dataset, reference) lgb.Dataset.set.reference(dataset, reference)
} }
...@@ -15,16 +15,17 @@ lgb.Dataset.set.reference(dataset, reference) ...@@ -15,16 +15,17 @@ lgb.Dataset.set.reference(dataset, reference)
passed dataset passed dataset
} }
\description{ \description{
set reference of \code{lgb.Dataset}. If you want to use validation data, you should set reference to training data
If you want to use validation data, you should set its reference to training data
} }
\examples{ \examples{
data(agaricus.train, package='lightgbm') \dontrun{
train <- agaricus.train data(agaricus.train, package='lightgbm')
dtrain <- lgb.Dataset(train$data, label=train$label) train <- agaricus.train
data(agaricus.test, package='lightgbm') dtrain <- lgb.Dataset(train$data, label=train$label)
test <- agaricus.test data(agaricus.test, package='lightgbm')
dtest <- lgb.Dataset(test$data, test=train$label) test <- agaricus.test
lgb.Dataset.set.reference(dtest, dtrain) dtest <- lgb.Dataset(test$data, test=train$label)
lgb.Dataset.set.reference(dtest, dtrain)
}
} }
...@@ -18,16 +18,18 @@ json format of model ...@@ -18,16 +18,18 @@ json format of model
Dump LightGBM model to json Dump LightGBM model to json
} }
\examples{ \examples{
library(lightgbm) \dontrun{
data(agaricus.train, package='lightgbm') library(lightgbm)
train <- agaricus.train data(agaricus.train, package='lightgbm')
dtrain <- lgb.Dataset(train$data, label=train$label) train <- agaricus.train
data(agaricus.test, package='lightgbm') dtrain <- lgb.Dataset(train$data, label=train$label)
test <- agaricus.test data(agaricus.test, package='lightgbm')
dtest <- lgb.Dataset.create.valid(dtrain, test$data, label=test$label) test <- agaricus.test
params <- list(objective="regression", metric="l2") dtest <- lgb.Dataset.create.valid(dtrain, test$data, label=test$label)
valids <- list(test=dtest) params <- list(objective="regression", metric="l2")
model <- lgb.train(params, dtrain, 100, valids, min_data=1, learning_rate=1, early_stopping_rounds=10) valids <- list(test=dtest)
json_model <- lgb.dump(model) model <- lgb.train(params, dtrain, 100, valids, min_data=1, learning_rate=1, early_stopping_rounds=10)
json_model <- lgb.dump(model)
}
} }
...@@ -16,17 +16,19 @@ booster ...@@ -16,17 +16,19 @@ booster
Load LightGBM model from saved model file Load LightGBM model from saved model file
} }
\examples{ \examples{
library(lightgbm) \dontrun{
data(agaricus.train, package='lightgbm') library(lightgbm)
train <- agaricus.train data(agaricus.train, package='lightgbm')
dtrain <- lgb.Dataset(train$data, label=train$label) train <- agaricus.train
data(agaricus.test, package='lightgbm') dtrain <- lgb.Dataset(train$data, label=train$label)
test <- agaricus.test data(agaricus.test, package='lightgbm')
dtest <- lgb.Dataset.create.valid(dtrain, test$data, label=test$label) test <- agaricus.test
params <- list(objective="regression", metric="l2") dtest <- lgb.Dataset.create.valid(dtrain, test$data, label=test$label)
valids <- list(test=dtest) params <- list(objective="regression", metric="l2")
model <- lgb.train(params, dtrain, 100, valids, min_data=1, learning_rate=1, early_stopping_rounds=10) valids <- list(test=dtest)
lgb.save(model, "model.txt") model <- lgb.train(params, dtrain, 100, valids, min_data=1, learning_rate=1, early_stopping_rounds=10)
load_booster <- lgb.load("model.txt") lgb.save(model, "model.txt")
load_booster <- lgb.load("model.txt")
}
} }
...@@ -20,16 +20,18 @@ booster ...@@ -20,16 +20,18 @@ booster
Save LightGBM model Save LightGBM model
} }
\examples{ \examples{
library(lightgbm) \dontrun{
data(agaricus.train, package='lightgbm') library(lightgbm)
train <- agaricus.train data(agaricus.train, package='lightgbm')
dtrain <- lgb.Dataset(train$data, label=train$label) train <- agaricus.train
data(agaricus.test, package='lightgbm') dtrain <- lgb.Dataset(train$data, label=train$label)
test <- agaricus.test data(agaricus.test, package='lightgbm')
dtest <- lgb.Dataset.create.valid(dtrain, test$data, label=test$label) test <- agaricus.test
params <- list(objective="regression", metric="l2") dtest <- lgb.Dataset.create.valid(dtrain, test$data, label=test$label)
valids <- list(test=dtest) params <- list(objective="regression", metric="l2")
model <- lgb.train(params, dtrain, 100, valids, min_data=1, learning_rate=1, early_stopping_rounds=10) valids <- list(test=dtest)
lgb.save(model, "model.txt") model <- lgb.train(params, dtrain, 100, valids, min_data=1, learning_rate=1, early_stopping_rounds=10)
lgb.save(model, "model.txt")
}
} }
...@@ -73,7 +73,7 @@ List of callback functions that are applied at each iteration.} ...@@ -73,7 +73,7 @@ List of callback functions that are applied at each iteration.}
\item{...}{other parameters, see parameters.md for more informations} \item{...}{other parameters, see parameters.md for more informations}
\item{valids}{a list of \code{lgb.Dataset} object, used for validation} \item{valids}{a list of \code{lgb.Dataset} objects, used for validation}
\item{params}{List of parameters} \item{params}{List of parameters}
...@@ -83,14 +83,14 @@ List of callback functions that are applied at each iteration.} ...@@ -83,14 +83,14 @@ List of callback functions that are applied at each iteration.}
\item{obj}{objective function, can be character or custom objective function} \item{obj}{objective function, can be character or custom objective function}
\item{eval}{evaluation function, can be (list of) character or custom eval function} \item{eval}{evaluation function, can be (a list of) character or custom eval function}
\item{verbose}{verbosity for output \item{verbose}{verbosity for output
if verbose > 0 , also will record iteration message to booster$record_evals} if \code{verbose > 0}, also will record iteration message to \code{booster$record_evals}}
\item{eval_freq}{evalutaion output frequence} \item{eval_freq}{evalutaion output frequency}
\item{init_model}{path of model file of \code{lgb.Booster} object, will continue train from this model} \item{init_model}{path of model file of \code{lgb.Booster} object, will continue training from this model}
\item{colnames}{feature names, if not null, will use this to overwrite the names in dataset} \item{colnames}{feature names, if not null, will use this to overwrite the names in dataset}
...@@ -119,25 +119,30 @@ a trained booster model \code{lgb.Booster}. ...@@ -119,25 +119,30 @@ a trained booster model \code{lgb.Booster}.
Main CV logic for LightGBM Main CV logic for LightGBM
Main training logic for LightGBM Main training logic for LightGBM
Simple interface for training an lightgbm model.
Its documentation is combined with lgb.train.
} }
\examples{ \examples{
library(lightgbm) \dontrun{
data(agaricus.train, package='lightgbm') library(lightgbm)
train <- agaricus.train data(agaricus.train, package='lightgbm')
dtrain <- lgb.Dataset(train$data, label=train$label) train <- agaricus.train
params <- list(objective="regression", metric="l2") dtrain <- lgb.Dataset(train$data, label=train$label)
model <- lgb.cv(params, dtrain, 10, nfold=5, min_data=1, learning_rate=1, early_stopping_rounds=10) params <- list(objective="regression", metric="l2")
model <- lgb.cv(params, dtrain, 10, nfold=5, min_data=1, learning_rate=1, early_stopping_rounds=10)
library(lightgbm) }
data(agaricus.train, package='lightgbm') \dontrun{
train <- agaricus.train library(lightgbm)
dtrain <- lgb.Dataset(train$data, label=train$label) data(agaricus.train, package='lightgbm')
data(agaricus.test, package='lightgbm') train <- agaricus.train
test <- agaricus.test dtrain <- lgb.Dataset(train$data, label=train$label)
dtest <- lgb.Dataset.create.valid(dtrain, test$data, label=test$label) data(agaricus.test, package='lightgbm')
params <- list(objective="regression", metric="l2") test <- agaricus.test
valids <- list(test=dtest) dtest <- lgb.Dataset.create.valid(dtrain, test$data, label=test$label)
model <- lgb.train(params, dtrain, 100, valids, min_data=1, learning_rate=1, early_stopping_rounds=10) params <- list(objective="regression", metric="l2")
valids <- list(test=dtest)
model <- lgb.train(params, dtrain, 100, valids, min_data=1, learning_rate=1, early_stopping_rounds=10)
}
} }
...@@ -38,17 +38,18 @@ number of columns corresponding to the number of trees. ...@@ -38,17 +38,18 @@ number of columns corresponding to the number of trees.
Predicted values based on class \code{lgb.Booster} Predicted values based on class \code{lgb.Booster}
} }
\examples{ \examples{
library(lightgbm) \dontrun{
data(agaricus.train, package='lightgbm') library(lightgbm)
train <- agaricus.train data(agaricus.train, package='lightgbm')
dtrain <- lgb.Dataset(train$data, label=train$label) train <- agaricus.train
data(agaricus.test, package='lightgbm') dtrain <- lgb.Dataset(train$data, label=train$label)
test <- agaricus.test data(agaricus.test, package='lightgbm')
dtest <- lgb.Dataset.create.valid(dtrain, test$data, label=test$label) test <- agaricus.test
params <- list(objective="regression", metric="l2") dtest <- lgb.Dataset.create.valid(dtrain, test$data, label=test$label)
valids <- list(test=dtest) params <- list(objective="regression", metric="l2")
model <- lgb.train(params, dtrain, 100, valids, min_data=1, learning_rate=1, early_stopping_rounds=10) valids <- list(test=dtest)
preds <- predict(model, test$data) model <- lgb.train(params, dtrain, 100, valids, min_data=1, learning_rate=1, early_stopping_rounds=10)
preds <- predict(model, test$data)
}
} }
...@@ -35,13 +35,15 @@ The \code{name} field can be one of the following: ...@@ -35,13 +35,15 @@ The \code{name} field can be one of the following:
} }
} }
\examples{ \examples{
data(agaricus.train, package='lightgbm') \dontrun{
train <- agaricus.train data(agaricus.train, package='lightgbm')
dtrain <- lgb.Dataset(train$data, label=train$label) train <- agaricus.train
lgb.Dataset.construct(dtrain) dtrain <- lgb.Dataset(train$data, label=train$label)
labels <- getinfo(dtrain, 'label') lgb.Dataset.construct(dtrain)
setinfo(dtrain, 'label', 1-labels) labels <- getinfo(dtrain, 'label')
labels2 <- getinfo(dtrain, 'label') setinfo(dtrain, 'label', 1-labels)
stopifnot(all.equal(labels2, 1-labels)) labels2 <- getinfo(dtrain, 'label')
stopifnot(all.equal(labels2, 1-labels))
}
} }
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
\name{slice} \name{slice}
\alias{slice} \alias{slice}
\alias{slice.lgb.Dataset} \alias{slice.lgb.Dataset}
\title{Slice an dataset} \title{Slice a dataset}
\usage{ \usage{
slice(dataset, ...) slice(dataset, ...)
...@@ -20,16 +20,17 @@ slice(dataset, ...) ...@@ -20,16 +20,17 @@ slice(dataset, ...)
constructed sub dataset constructed sub dataset
} }
\description{ \description{
Get a new Dataset containing the specified rows of Get a new \code{lgb.Dataset} containing the specified rows of
orginal lgb.Dataset object orginal lgb.Dataset object
} }
\examples{ \examples{
data(agaricus.train, package='lightgbm') \dontrun{
train <- agaricus.train data(agaricus.train, package='lightgbm')
dtrain <- lgb.Dataset(train$data, label=train$label) train <- agaricus.train
dtrain <- lgb.Dataset(train$data, label=train$label)
dsub <- slice(dtrain, 1:42)
labels1 <- getinfo(dsub, 'label')
dsub <- slice(dtrain, 1:42)
labels1 <- getinfo(dsub, 'label')
}
} }
...@@ -6,7 +6,7 @@ CXX_STD = CXX11 ...@@ -6,7 +6,7 @@ CXX_STD = CXX11
LGBM_RFLAGS = -DUSE_SOCKET LGBM_RFLAGS = -DUSE_SOCKET
PKG_CPPFLAGS= -I$(PKGROOT)/include $(LGBM_RFLAGS) PKG_CPPFLAGS= -I$(PKGROOT)/include $(LGBM_RFLAGS) -Wno-deprecated-declarations
PKG_CXXFLAGS= $(SHLIB_OPENMP_CFLAGS) $(SHLIB_PTHREAD_FLAGS) -std=c++11 PKG_CXXFLAGS= $(SHLIB_OPENMP_CFLAGS) $(SHLIB_PTHREAD_FLAGS) -std=c++11
PKG_LIBS = $(SHLIB_OPENMP_CFLAGS) $(SHLIB_PTHREAD_FLAGS) PKG_LIBS = $(SHLIB_OPENMP_CFLAGS) $(SHLIB_PTHREAD_FLAGS)
OBJECTS = ./lightgbm-all.o ./lightgbm_R.o OBJECTS = ./lightgbm-all.o ./lightgbm_R.o
/* /*
* A simple wrapper for access data in R object. * A simple wrapper for accessing data in R object.
* Due to license issue(GPLv2), we cannot include R's header file, so use this simple wrapper instead. * Due to license issue(GPLv2), we cannot include R's header file, so use this simple wrapper instead.
* However, If R change its define of object, this file need to be updated as well. * However, if R changes the way it defines objects, this file will need to be updated as well.
*/ */
#ifndef R_OBJECT_HELPER_H_ #ifndef R_OBJECT_HELPER_H_
#define R_OBJECT_HELPER_H_ #define R_OBJECT_HELPER_H_
......
...@@ -8,11 +8,10 @@ ...@@ -8,11 +8,10 @@
#include "R_object_helper.h" #include "R_object_helper.h"
/*! /*!
* \brief get string message of the last error * \brief get string message of the last error
* all function in this file will return 0 when succeed * all functions in this file will return 0 on success
* and -1 when an error occured, * and -1 when an error occured
* \return err_msg error inforomation * \return err_msg error inforomation
* \return error inforomation * \return error inforomation
*/ */
...@@ -21,10 +20,10 @@ DllExport SEXP LGBM_GetLastError_R(SEXP buf_len, SEXP actual_len, SEXP err_msg); ...@@ -21,10 +20,10 @@ DllExport SEXP LGBM_GetLastError_R(SEXP buf_len, SEXP actual_len, SEXP err_msg);
// --- start Dataset interface // --- start Dataset interface
/*! /*!
* \brief load data set from file like the command_line LightGBM do * \brief load data set from file like the command_line LightGBM does
* \param filename the name of the file * \param filename the name of the file
* \param parameters additional parameters * \param parameters additional parameters
* \param reference used to align bin mapper with other dataset, nullptr means don't used * \param reference used to align bin mapper with other dataset, nullptr means not used
* \param out created dataset * \param out created dataset
* \return 0 when succeed, -1 when failure happens * \return 0 when succeed, -1 when failure happens
*/ */
...@@ -43,7 +42,7 @@ DllExport SEXP LGBM_DatasetCreateFromFile_R(SEXP filename, ...@@ -43,7 +42,7 @@ DllExport SEXP LGBM_DatasetCreateFromFile_R(SEXP filename,
* \param nelem number of nonzero elements in the matrix * \param nelem number of nonzero elements in the matrix
* \param num_row number of rows * \param num_row number of rows
* \param parameters additional parameters * \param parameters additional parameters
* \param reference used to align bin mapper with other dataset, nullptr means don't used * \param reference used to align bin mapper with other dataset, nullptr means not used
* \param out created dataset * \param out created dataset
* \return 0 when succeed, -1 when failure happens * \return 0 when succeed, -1 when failure happens
*/ */
...@@ -65,7 +64,7 @@ DllExport SEXP LGBM_DatasetCreateFromCSC_R(SEXP indptr, ...@@ -65,7 +64,7 @@ DllExport SEXP LGBM_DatasetCreateFromCSC_R(SEXP indptr,
* \param nrow number of rows * \param nrow number of rows
* \param ncol number columns * \param ncol number columns
* \param parameters additional parameters * \param parameters additional parameters
* \param reference used to align bin mapper with other dataset, nullptr means don't used * \param reference used to align bin mapper with other dataset, nullptr means not used
* \param out created dataset * \param out created dataset
* \return 0 when succeed, -1 when failure happens * \return 0 when succeed, -1 when failure happens
*/ */
...@@ -117,7 +116,7 @@ DllExport SEXP LGBM_DatasetGetFeatureNames_R(SEXP handle, ...@@ -117,7 +116,7 @@ DllExport SEXP LGBM_DatasetGetFeatureNames_R(SEXP handle,
/*! /*!
* \brief save dateset to binary file * \brief save dateset to binary file
* \param handle a instance of dataset * \param handle an instance of dataset
* \param filename file name * \param filename file name
* \return 0 when succeed, -1 when failure happens * \return 0 when succeed, -1 when failure happens
*/ */
...@@ -127,7 +126,7 @@ DllExport SEXP LGBM_DatasetSaveBinary_R(SEXP handle, ...@@ -127,7 +126,7 @@ DllExport SEXP LGBM_DatasetSaveBinary_R(SEXP handle,
/*! /*!
* \brief free dataset * \brief free dataset
* \param handle a instance of dataset * \param handle an instance of dataset
* \return 0 when succeed, -1 when failure happens * \return 0 when succeed, -1 when failure happens
*/ */
DllExport SEXP LGBM_DatasetFree_R(SEXP handle, DllExport SEXP LGBM_DatasetFree_R(SEXP handle,
...@@ -135,9 +134,9 @@ DllExport SEXP LGBM_DatasetFree_R(SEXP handle, ...@@ -135,9 +134,9 @@ DllExport SEXP LGBM_DatasetFree_R(SEXP handle,
/*! /*!
* \brief set vector to a content in info * \brief set vector to a content in info
* Note: group and group only work for C_API_DTYPE_INT32 * Note: group and group_id only work for C_API_DTYPE_INT32
* label and weight only work for C_API_DTYPE_FLOAT32 * label and weight only work for C_API_DTYPE_FLOAT32
* \param handle a instance of dataset * \param handle an instance of dataset
* \param field_name field name, can be label, weight, group, group_id * \param field_name field name, can be label, weight, group, group_id
* \param field_data pointer to vector * \param field_data pointer to vector
* \param num_element number of element in field_data * \param num_element number of element in field_data
...@@ -151,7 +150,7 @@ DllExport SEXP LGBM_DatasetSetField_R(SEXP handle, ...@@ -151,7 +150,7 @@ DllExport SEXP LGBM_DatasetSetField_R(SEXP handle,
/*! /*!
* \brief get size of info vector from dataset * \brief get size of info vector from dataset
* \param handle a instance of dataset * \param handle an instance of dataset
* \param field_name field name * \param field_name field name
* \param out size of info vector from dataset * \param out size of info vector from dataset
* \return 0 when succeed, -1 when failure happens * \return 0 when succeed, -1 when failure happens
...@@ -163,7 +162,7 @@ DllExport SEXP LGBM_DatasetGetFieldSize_R(SEXP handle, ...@@ -163,7 +162,7 @@ DllExport SEXP LGBM_DatasetGetFieldSize_R(SEXP handle,
/*! /*!
* \brief get info vector from dataset * \brief get info vector from dataset
* \param handle a instance of dataset * \param handle an instance of dataset
* \param field_name field name * \param field_name field name
* \param field_data pointer to vector * \param field_data pointer to vector
* \return 0 when succeed, -1 when failure happens * \return 0 when succeed, -1 when failure happens
...@@ -226,7 +225,7 @@ DllExport SEXP LGBM_BoosterCreateFromModelfile_R(SEXP filename, ...@@ -226,7 +225,7 @@ DllExport SEXP LGBM_BoosterCreateFromModelfile_R(SEXP filename,
SEXP call_state); SEXP call_state);
/*! /*!
* \brief Merge model in two booster to first handle * \brief Merge model in two boosters to first handle
* \param handle handle, will merge other handle to this * \param handle handle, will merge other handle to this
* \param other_handle * \param other_handle
* \return 0 when succeed, -1 when failure happens * \return 0 when succeed, -1 when failure happens
...@@ -266,7 +265,7 @@ DllExport SEXP LGBM_BoosterResetParameter_R(SEXP handle, ...@@ -266,7 +265,7 @@ DllExport SEXP LGBM_BoosterResetParameter_R(SEXP handle,
SEXP call_state); SEXP call_state);
/*! /*!
* \brief Get number of class * \brief Get number of classes
* \param handle handle * \param handle handle
* \param out number of classes * \param out number of classes
* \return 0 when succeed, -1 when failure happens * \return 0 when succeed, -1 when failure happens
...@@ -351,8 +350,8 @@ DllExport SEXP LGBM_BoosterGetNumPredict_R(SEXP handle, ...@@ -351,8 +350,8 @@ DllExport SEXP LGBM_BoosterGetNumPredict_R(SEXP handle,
SEXP call_state); SEXP call_state);
/*! /*!
* \brief Get prediction for training data and validation data * \brief Get prediction for training data and validation data.
this can be used to support customized eval function * This can be used to support customized eval function
* \param handle handle * \param handle handle
* \param data_idx 0:training data, 1: 1st valid data, 2:2nd valid data ... * \param data_idx 0:training data, 1: 1st valid data, 2:2nd valid data ...
* \param out_result, used to store predict result, should pre-allocate memory * \param out_result, used to store predict result, should pre-allocate memory
...@@ -404,14 +403,14 @@ DllExport SEXP LGBM_BoosterCalcNumPredict_R(SEXP handle, ...@@ -404,14 +403,14 @@ DllExport SEXP LGBM_BoosterCalcNumPredict_R(SEXP handle,
/*! /*!
* \brief make prediction for an new data set * \brief make prediction for an new data set
* Note: should pre-allocate memory for out_result, * Note: should pre-allocate memory for out_result,
* for noraml and raw score: its length is equal to num_class * num_data * for normal and raw score: its length is equal to num_class * num_data
* for leaf index, its length is equal to num_class * num_data * num_iteration * for leaf index, its length is equal to num_class * num_data * num_iteration
* \param handle handle * \param handle handle
* \param indptr pointer to row headers * \param indptr pointer to row headers
* \param indices findex * \param indices findex
* \param data fvalue * \param data fvalue
* \param nindptr number of cols in the matrix + 1 * \param nindptr number of cols in the matrix + 1
* \param nelem number of nonzero elements in the matrix * \param nelem number of non-zero elements in the matrix
* \param num_row number of rows * \param num_row number of rows
* \param is_rawscore * \param is_rawscore
* \param is_leafidx * \param is_leafidx
...@@ -433,9 +432,9 @@ DllExport SEXP LGBM_BoosterPredictForCSC_R(SEXP handle, ...@@ -433,9 +432,9 @@ DllExport SEXP LGBM_BoosterPredictForCSC_R(SEXP handle,
SEXP call_state); SEXP call_state);
/*! /*!
* \brief make prediction for an new data set * \brief make prediction for a new data set
* Note: should pre-allocate memory for out_result, * Note: should pre-allocate memory for out_result,
* for noraml and raw score: its length is equal to num_class * num_data * for normal and raw score: its length is equal to num_class * num_data
* for leaf index, its length is equal to num_class * num_data * num_iteration * for leaf index, its length is equal to num_class * num_data * num_iteration
* \param handle handle * \param handle handle
* \param data pointer to the data space * \param data pointer to the data space
......
require(lightgbm)
context("basic functions") context("basic functions")
data(agaricus.train, package='lightgbm') data(agaricus.train, package='lightgbm')
...@@ -18,10 +16,10 @@ test_that("train and predict binary classification", { ...@@ -18,10 +16,10 @@ test_that("train and predict binary classification", {
expect_lt(min(record_results), 0.02) expect_lt(min(record_results), 0.02)
pred <- predict(bst, test$data) pred <- predict(bst, test$data)
expect_length(pred, 1611) expect_equal(length(pred), 1611)
pred1 <- predict(bst, train$data, num_iteration = 1) pred1 <- predict(bst, train$data, num_iteration = 1)
expect_length(pred1, 6513) expect_equal(length(pred1), 6513)
err_pred1 <- sum((pred1 > 0.5) != train$label)/length(train$label) err_pred1 <- sum((pred1 > 0.5) != train$label)/length(train$label)
err_log <- record_results[1] err_log <- record_results[1]
expect_lt(abs(err_pred1 - err_log), 10e-6) expect_lt(abs(err_pred1 - err_log), 10e-6)
...@@ -40,8 +38,7 @@ test_that("train and predict softmax", { ...@@ -40,8 +38,7 @@ test_that("train and predict softmax", {
expect_lt(min(record_results), 0.03) expect_lt(min(record_results), 0.03)
pred <- predict(bst, as.matrix(iris[, -5])) pred <- predict(bst, as.matrix(iris[, -5]))
expect_length(pred, nrow(iris) * 3) expect_equal(length(pred), nrow(iris) * 3)
}) })
...@@ -82,4 +79,3 @@ test_that("cv works", { ...@@ -82,4 +79,3 @@ test_that("cv works", {
bst <- lgb.cv(params, dtrain, 10, nflod=5, min_data=1, learning_rate=1, early_stopping_rounds=10) bst <- lgb.cv(params, dtrain, 10, nflod=5, min_data=1, learning_rate=1, early_stopping_rounds=10)
expect_false(is.null(bst$record_evals)) expect_false(is.null(bst$record_evals))
}) })
context('Test models with custom objective') context('Test models with custom objective')
require(lightgbm)
data(agaricus.train, package='lightgbm') data(agaricus.train, package='lightgbm')
data(agaricus.test, package='lightgbm') data(agaricus.test, package='lightgbm')
dtrain <- lgb.Dataset(agaricus.train$data, label = agaricus.train$label) dtrain <- lgb.Dataset(agaricus.train$data, label = agaricus.train$label)
...@@ -27,10 +25,6 @@ param <- list(num_leaves=8, learning_rate=1, ...@@ -27,10 +25,6 @@ param <- list(num_leaves=8, learning_rate=1,
num_round <- 10 num_round <- 10
test_that("custom objective works", { test_that("custom objective works", {
bst <- lgb.train(param, dtrain, num_round, watchlist, eval=evalerror) bst <- lgb.train(param, dtrain, num_round, watchlist, eval = evalerror)
expect_false(is.null(bst$record_evals)) expect_false(is.null(bst$record_evals))
}) })
#ifndef LIGHTGBM_UTILS_LOG_H_ #ifndef LIGHTGBM_UTILS_LOG_H_
#define LIGHTGBM_UTILS_LOG_H_ #define LIGHTGBM_UTILS_LOG_H_
#include <iostream>
#include <cstdio> #include <cstdio>
#include <cstdlib> #include <cstdlib>
#include <cstdarg> #include <cstdarg>
......
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