Внешняя память не включена в mingw ‘на XGboost

Я пытаюсь запустить xgboost и получаю сообщение об ошибке, пытаясь преобразовать тип файла libsvm в xgbmatrix.

dtrain = xgb.DMatrix('train#dtrain.cache')
XGBoostError: b'[16:45:24] src/data/data.cc:248: External memory is not enabled in mingw'

Кажется, это вызвано

void DMatrix::SaveToLocalFile(const std::string& fname) {
data::SimpleCSRSource source;
source.CopyFrom(this);
std::unique_ptr<dmlc::Stream> fo(dmlc::Stream::Create(fname.c_str(), "w"));
source.SaveBinary(fo.get());
}

DMatrix* DMatrix::Create(std::unique_ptr<DataSource>&& source,
const std::string& cache_prefix) {
if (cache_prefix.length() == 0) {
return new data::SimpleDMatrix(std::move(source));
} else {
#if DMLC_ENABLE_STD_THREAD
return new data::SparsePageDMatrix(std::move(source), cache_prefix);
#else
LOG(FATAL) << "External memory is not enabled in mingw";
return nullptr;
#endif
}
}

В этом файле github: https://github.com/dmlc/xgboost/blob/master/src/data/data.cc

Я не знаком с C, поэтому у меня проблемы с отладкой.

0

Решение

Эта проблема в том, что вы используете URL на основе DMatrix создание. то есть вы дали файл данных как 'train#dtrain.cache',

Кэш может быть создан только в том случае, если ваш компилятор поддерживает внешнюю память. у mingw этого нет, к сожалению. Следовательно, просто дайте свой файл как "train" и убедитесь, что это формат libsvm, и все должно быть в порядке.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]