本文整理汇总了C++中Forest::initR方法的典型用法代码示例。如果您正苦于以下问题:C++ Forest::initR方法的具体用法?C++ Forest::initR怎么用?C++ Forest::initR使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Forest
的用法示例。
在下文中一共展示了Forest::initR方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: rangerCpp
// [[Rcpp::export]]
Rcpp::List rangerCpp(uint treetype, std::string dependent_variable_name,
Rcpp::NumericMatrix input_data, std::vector<std::string> variable_names, uint mtry, uint num_trees, bool verbose,
uint seed, uint num_threads, bool write_forest, uint importance_mode_r, uint min_node_size,
std::vector<std::vector<double>>& split_select_weights, bool use_split_select_weights,
std::vector<std::string>& always_split_variable_names, bool use_always_split_variable_names,
std::string status_variable_name, bool prediction_mode, Rcpp::List loaded_forest, Rcpp::RawMatrix sparse_data,
bool sample_with_replacement, bool probability, std::vector<std::string>& unordered_variable_names,
bool use_unordered_variable_names, bool save_memory, uint splitrule_r,
std::vector<double>& case_weights, bool use_case_weights, bool predict_all,
bool keep_inbag, double sample_fraction, double alpha, double minprop, bool holdout, uint prediction_type_r) {
Rcpp::List result;
Forest* forest = 0;
Data* data = 0;
try {
// Empty split select weights and always split variables if not used
if (!use_split_select_weights) {
split_select_weights.clear();
}
if (!use_always_split_variable_names) {
always_split_variable_names.clear();
}
if (!use_unordered_variable_names) {
unordered_variable_names.clear();
}
if (!use_case_weights) {
case_weights.clear();
}
std::ostream* verbose_out;
if (verbose) {
verbose_out = &Rcpp::Rcout;
} else {
verbose_out = new std::stringstream;
}
size_t num_rows = input_data.nrow();
size_t num_cols = input_data.ncol();
// Initialize data with double memmode
data = new DataDouble(input_data.begin(), variable_names, num_rows, num_cols);
// If there is sparse data, add it
if (sparse_data.nrow() > 1) {
data->addSparseData(sparse_data.begin(), sparse_data.ncol());
}
switch (treetype) {
case TREE_CLASSIFICATION:
if (probability) {
forest = new ForestProbability;
} else {
forest = new ForestClassification;
}
break;
case TREE_REGRESSION:
forest = new ForestRegression;
break;
case TREE_SURVIVAL:
forest = new ForestSurvival;
break;
case TREE_PROBABILITY:
forest = new ForestProbability;
break;
}
ImportanceMode importance_mode = (ImportanceMode) importance_mode_r;
SplitRule splitrule = (SplitRule) splitrule_r;
PredictionType prediction_type = (PredictionType) prediction_type_r;
// Init Ranger
forest->initR(dependent_variable_name, data, mtry, num_trees, verbose_out, seed, num_threads,
importance_mode, min_node_size, split_select_weights, always_split_variable_names, status_variable_name,
prediction_mode, sample_with_replacement, unordered_variable_names, save_memory, splitrule, case_weights,
predict_all, keep_inbag, sample_fraction, alpha, minprop, holdout, prediction_type);
// Load forest object if in prediction mode
if (prediction_mode) {
size_t dependent_varID = loaded_forest["dependent.varID"];
//size_t num_trees = loaded_forest["num.trees"];
std::vector<std::vector<std::vector<size_t>> > child_nodeIDs = loaded_forest["child.nodeIDs"];
std::vector<std::vector<size_t>> split_varIDs = loaded_forest["split.varIDs"];
std::vector<std::vector<double>> split_values = loaded_forest["split.values"];
std::vector<bool> is_ordered = loaded_forest["is.ordered"];
if (treetype == TREE_CLASSIFICATION) {
std::vector<double> class_values = loaded_forest["class.values"];
((ForestClassification*) forest)->loadForest(dependent_varID, num_trees, child_nodeIDs, split_varIDs,
split_values, class_values, is_ordered);
} else if (treetype == TREE_REGRESSION) {
((ForestRegression*) forest)->loadForest(dependent_varID, num_trees, child_nodeIDs, split_varIDs, split_values,
is_ordered);
} else if (treetype == TREE_SURVIVAL) {
size_t status_varID = loaded_forest["status.varID"];
std::vector<std::vector<std::vector<double>> > chf = loaded_forest["chf"];
std::vector<double> unique_timepoints = loaded_forest["unique.death.times"];
((ForestSurvival*) forest)->loadForest(dependent_varID, num_trees, child_nodeIDs, split_varIDs, split_values,
status_varID, chf, unique_timepoints, is_ordered);
//.........这里部分代码省略.........