я использую этот библиотека для реализации базового машинного обучения в проекте. Я пытаюсь перебрать массив команд соревнований, а затем использовать каждый матч в качестве метки для прогноза о проценте успеха.
Я тренирую сценарий, и в этой части все выглядит нормально, но когда я пытаюсь вывести результат прогноза, будут отображаться только первые две команды файла. Что я делаю не так с циклом?
Это вывод библиотеки машинного обучения
array(1) { [0]=> array(2) { ["Frosinone Calcio"]=> float(0.413733) ["AC Chievo Verona"]=> float(0.586267) } }
array(1) { [0]=> array(2) { ["Frosinone Calcio"]=> float(0.58545) ["AC Chievo Verona"]=> float(0.41455) } }
array(1) { [0]=> array(2) { ["Frosinone Calcio"]=> float(0.58545) ["AC Chievo Verona"]=> float(0.41455) } }
Но я ожидаю что-то вроде этого:
array(1) { [0]=> array(2) { ["Frosinone Calcio"]=> float(0.413733) ["AC Chievo Verona"]=> float(0.586267) } }
array(1) { [0]=> array(2) { ["Juventus"]=> float(0.58545) ["Milan"]=> float(0.41455) } }
array(1) { [0]=> array(2) { ["Sassuolo"]=> float(0.58545) ["Empoli"]=> float(0.41455) } }
// ecc...
Вот мой код:
<?php
require_once __DIR__ . '/vendor/autoload.php';
use Phpml\Classification\SVC;
use Phpml\SupportVectorMachine\Kernel;
use Phpml\Dataset\ArrayDataset;
$data = json_decode(file_get_contents('serie_a.json'),true);
$classifier = new SVC(
Kernel::LINEAR, // $kernel
1.0, // $cost
3, // $degree
null, // $gamma
0.0, // $coef0
0.001, // $tolerance
100, // $cacheSize
true, // $shrinking
true // $probabilityEstimates, set to true
);
foreach($data['matches'] as $match){
$homeTeam = $match['homeTeam']['name'];
$awayTeam = $match['awayTeam']['name'];
#$matchday = $match['matchday'];
#$oldDate = new DateTime($match['utcDate']);
#$date = $oldDate->format('Y-m-d');
$labels = ["$homeTeam", "$awayTeam"];
}
$samples = [[1, 0], [1, 1], [0, 1]];
$classifier->train($samples, $labels);
echo '<pre>'.var_dump($classifier->predictProbability([[1, 0]])).'</pre>';
echo '<pre>'.var_dump($classifier->predictProbability([[1, 1]])).'</pre>';
echo '<pre>'.var_dump($classifier->predictProbability([[0, 1]])).'</pre>';
//$classifier->predictProbability([[3, 2], [1, 5]]);
// return [
// ['a' => 0.349833, 'b' => 0.650167],
// ['a' => 0.922664, 'b' => 0.0773364],
// ]
?>
Задача ещё не решена.
Других решений пока нет …