Проверьте правильность классификатора дерева решений с помощью Python

Оператор >> является форматированным оператором ввода. Как таковой зависит от локали для того, как ввод считывается из потока:

[istream.formatted.arithmetic]

Как и в случае вставок, эти экстракторы зависят от объекта num_get & lt;> (22.4.2.1) locale для выполнения анализа данных входного потока. Эти экстракторы ведут себя как форматированные входные функции (как описано в 27.7.2.2.1). После создания часового объекта преобразование происходит так, как если бы выполнялся следующий фрагмент кода:

blockquote>
   typedef num_get< charT,istreambuf_iterator > numget;
   iostate err = iostate::goodbit;
   use_facet< numget >(loc).get(*this, 0, *this, err, val);
   setstate(err);

Как мы видим выше, значение фактически задается гранью numget

num_get виртуальные функции [facet.num.get.virtuals]

Этап 3:

Числовое значение для может быть одним из:

  • ноль, если функция преобразования не может преобразовать все поле. ios_base :: failbit присваивается err.
  • самое положительное представимое значение, если поле представляет слишком большое положительное значение, которое должно быть представлено в val. ios_base :: failbit присваивается err.
  • самое отрицательное представимое значение или ноль для целых чисел без знака, если поле представляет слишком большое отрицательное значение, которое должно быть представлено в val. ios_base :: failbit присваивается err.
blockquote>

Определение этапа 3 резко изменилось между n2723 -> n2798

Где я могу найти текущие стандартные документы C или C ++

виртуальные функции num_get [facet.num.get.virtuals]

Этап 3: результат обработки этапа 2 может быть одним из:

  • На этапе 2 была скопирована последовательность символов, которая преобразуется (согласно правилам scanf) в значение типа val. Это значение хранится в val и ios_base :: goodbit хранится в err.
  • Последовательность символов, накопленных на этапе 2, заставила scanf сообщать о сбое ввода. ios_base :: failbit присваивается ошибке.
blockquote>

3
задан num3ri 26 February 2019 в 15:32
поделиться

2 ответа

Вы должны выполнить перекрестную проверку, если хотите проверить точность своей системы.

Вы должны разделить ваш набор данных на две части. Первый используется для изучения вашей системы. Затем вы выполняете процесс прогнозирования для второй части набора данных и сравниваете прогнозируемые результаты с хорошими. С помощью этого метода вы проверяете свою систему на необученном наборе данных.

Чтобы разделить ваш сет, вы должны использовать train_test_split из sklearn.model_selection.

Вот хорошая лекция: https://machinelearningmastery.com/k-fold-cross-validation/

0
ответ дан Ghislain Moreau 26 February 2019 в 15:32
поделиться
  1. Разделите ваши данные на обучающие и тестируйте:

    var_train, var_test, res_train, res_test = train_test_split(variable_list, result_list, test_size = 0.3)
    
  2. Обучите ваше дерево решений на наборе поездов:

    decision_tree = tree.DecisionTreeClassifier()
    decision_tree = decision_tree.fit(var_train, res_train)
    
  3. [ 119]

    Тестирование производительности модели путем расчета точности на тестовом наборе:

    res_pred = decision_tree.predict(var_test)
    score = accuracy_score(res_test, res_pred)
    

    Или вы можете напрямую использовать decision_tree.score:

    score = decision_tree.score(var_test, res_test)
    

Ошибка вы получаете, потому что вы пытаетесь передать variable_list (это ваш список входных функций) в качестве параметра в accuracy_score. Предполагается, что вы передадите свой список истинных меток и предсказанных меток.

0
ответ дан panktijk 26 February 2019 в 15:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: