Функция предсказания наивного байесовского алгоритма возвращает неправильное значение - PullRequest
0 голосов
/ 26 февраля 2020

Здравствуйте, я пытался работать с наивным байесовским алгоритмом. Я пытался заполнить форму значениями в наборе данных, но функция предикторов возвращает неправильное значение метки, вот как выглядит мое действие контроллера:

  public function huntreplyAction(Request $request)
    {

        $huntForm = $this->createForm('BlogBundle\Form\HuntForm');
        $huntForm->handleRequest($request);
        $huntdata = $huntForm->getData();
        dump($huntdata);
        $outlook = $huntForm["outlook"]->getData();
        $temperature = $huntForm["temperature"]->getData();
        $humidity = $huntForm["humidity"]->getData();
        $windy = $huntForm["windy"]->getData();
        dump($outlook);
        dump($temperature);
        dump($humidity);
        dump($windy);

        $samples = [[1, 1, 1, 0], [1, 1, 1, 1], [2, 1, 1, 0], [3, 3, 1, 0], [3, 2, 0, 0], [3, 2, 0, 1], [2, 2, 0, 1],
            [1, 3, 1, 0], [1, 2, 0, 0], [3, 3, 0, 0], [1, 3, 0, 1], [2, 3, 1, 1], [2, 1, 0, 0], [3, 3, 1, 1]];
        $labels = ['b', 'b', 'a', 'a', 'a', 'b', 'a', 'b', 'a', 'a', 'a', 'a', 'a', 'b'];

        $classifier = new NaiveBayes();
        $classifier->train($samples, $labels);

        var_dump( $classifier->predict([$outlook,$temperature,$humidity,$windy]));



        return $this->render('blog/huntreply.html.twig', array(
            'outlook' => $outlook,
            'temperature' => $temperature,
            'humidity' => $humidity,
            'windy' => $windy,

        ));


    }

и это HuntForm:

<?php

namespace BlogBundle\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type as Form;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Validator\Constraints as Assert;


class HuntForm extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('outlook',ChoiceType::class, array(
                'choices' => array(
                    'Sunny' => 1,
                    'Overcast' => 2,
                    'Rainy' => 3,
                )))
            ->add('temperature',ChoiceType::class, array(
                'choices' => array(
                    'Hot' => 1,
                    'Cool' => 2,
                    'Mild' => 3,
                )))
            ->add('humidity',ChoiceType::class, array(
                'choices' => array(
                    'High' => 1,
                    'Normal' => 0,
                )))
            ->add('windy',ChoiceType::class, array(
                'choices' => array(
                    'True' => 1,
                    'False' => 0,
                )));
    }

    public function getBlockPrefix()
    {
        return 'hunt_form';
    }
}

поэтому, например, если я даю [2,1,1,0], который находится в наборе данных, он должен вернуть «a», но его возвращаемое «b» я не знаю Где проблема, я попытался отрисовать значения формы, и они верны, так как я могу это исправить?

...