Здравствуйте, я пытался работать с наивным байесовским алгоритмом. Я пытался заполнить форму значениями в наборе данных, но функция предикторов возвращает неправильное значение метки, вот как выглядит мое действие контроллера:
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» я не знаю Где проблема, я попытался отрисовать значения формы, и они верны, так как я могу это исправить?