Commit c3c1708c authored by Guolin Ke's avatar Guolin Ke
Browse files

fix #818

parent 486f5db4
...@@ -66,6 +66,7 @@ GBDT::~GBDT() { ...@@ -66,6 +66,7 @@ GBDT::~GBDT() {
void GBDT::Init(const BoostingConfig* config, const Dataset* train_data, const ObjectiveFunction* objective_function, void GBDT::Init(const BoostingConfig* config, const Dataset* train_data, const ObjectiveFunction* objective_function,
const std::vector<const Metric*>& training_metrics) { const std::vector<const Metric*>& training_metrics) {
CHECK(train_data->num_features() > 0);
train_data_ = train_data; train_data_ = train_data;
iter_ = 0; iter_ = 0;
num_iteration_for_pred_ = 0; num_iteration_for_pred_ = 0;
...@@ -164,7 +165,7 @@ void GBDT::ResetTrainingData(const Dataset* train_data, const ObjectiveFunction* ...@@ -164,7 +165,7 @@ void GBDT::ResetTrainingData(const Dataset* train_data, const ObjectiveFunction*
if (train_data != train_data_ && !train_data_->CheckAlign(*train_data)) { if (train_data != train_data_ && !train_data_->CheckAlign(*train_data)) {
Log::Fatal("cannot reset training data, since new training data has different bin mappers"); Log::Fatal("cannot reset training data, since new training data has different bin mappers");
} }
CHECK(train_data->num_features() > 0);
objective_function_ = objective_function; objective_function_ = objective_function;
if (objective_function_ != nullptr) { if (objective_function_ != nullptr) {
is_constant_hessian_ = objective_function_->IsConstantHessian(); is_constant_hessian_ = objective_function_->IsConstantHessian();
......
...@@ -38,6 +38,7 @@ public: ...@@ -38,6 +38,7 @@ public:
Booster(const Dataset* train_data, Booster(const Dataset* train_data,
const char* parameters) { const char* parameters) {
CHECK(train_data->num_features() > 0);
auto param = ConfigBase::Str2Map(parameters); auto param = ConfigBase::Str2Map(parameters);
config_.Set(param); config_.Set(param);
if (config_.num_threads > 0) { if (config_.num_threads > 0) {
...@@ -94,6 +95,7 @@ public: ...@@ -94,6 +95,7 @@ public:
void ResetTrainingData(const Dataset* train_data) { void ResetTrainingData(const Dataset* train_data) {
if (train_data != train_data_) { if (train_data != train_data_) {
CHECK(train_data->num_features() > 0);
std::lock_guard<std::mutex> lock(mutex_); std::lock_guard<std::mutex> lock(mutex_);
train_data_ = train_data; train_data_ = train_data;
CreateObjectiveAndMetrics(); CreateObjectiveAndMetrics();
......
...@@ -24,10 +24,12 @@ Dataset::Dataset() { ...@@ -24,10 +24,12 @@ Dataset::Dataset() {
} }
Dataset::Dataset(data_size_t num_data) { Dataset::Dataset(data_size_t num_data) {
CHECK(num_data > 0);
data_filename_ = "noname"; data_filename_ = "noname";
num_data_ = num_data; num_data_ = num_data;
metadata_.Init(num_data_, NO_SPECIFIC, NO_SPECIFIC); metadata_.Init(num_data_, NO_SPECIFIC, NO_SPECIFIC);
is_finish_load_ = false; is_finish_load_ = false;
group_bin_boundaries_.push_back(0);
} }
Dataset::~Dataset() { Dataset::~Dataset() {
...@@ -223,7 +225,9 @@ void Dataset::Construct( ...@@ -223,7 +225,9 @@ void Dataset::Construct(
used_features.emplace_back(i); used_features.emplace_back(i);
} }
} }
if (used_features.empty()) {
Log::Fatal("Cannot construct Dataset since there are not useful features.");
}
auto features_in_group = NoGroup(used_features); auto features_in_group = NoGroup(used_features);
if (io_config.enable_bundle) { if (io_config.enable_bundle) {
......
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