Я строю платформу логистической регрессии на PHP. Следующий фрагмент кода работает нормально, когда во фрейме данных есть только одна функция. Например, CSV-файл, подобный следующему:
"sample","language"
"Hello, how are you?","english",
"Je voudrais une boîte de chocolats.","french"
...
Однако, когда я пытаюсь обучить ИИ с двумя функциями, основанными на титановой выживаемости (гипотеза: влияет ли количество братьев и сестер и супругов на выживаемость) с таким фреймом данных:
"SibSp","Parch","Survived",
"1", "1", "1",
"3", "3", "1",
"4", "1", "0"
...
Я получаю эту ошибку:
Phpml \ Exception \ InvalidArgumentException Размер указанных массивов не совпадает
Мой фрагмент кода выглядит следующим образом, $request->features
содержит количество функций, которые имеет этот фрейм данных, поскольку features +1
будет содержать фактический результат (1 = выжил, 0 = умер):
$dataset = new CsvDataset($file, (int) $request->features);
$vectorizer = new TokenCountVectorizer(new WordTokenizer());
$tfIdfTransformer = new TfIdfTransformer();
$samples = [];
for($i = 0; $i <= $request->features -1; $i++):
foreach ($dataset->getSamples() as $sample):
$samples[$i][] = $sample[$i];
endforeach;
endfor;
for($i = 0; $i <= count($samples) -1; $i++):
$vectorizer->fit($samples[$i]);
$vectorizer->transform($samples[$i]);
$tfIdfTransformer->fit($samples[$i]);
$tfIdfTransformer->transform($samples[$i]);
endfor;
$dataset = new ArrayDataset($samples, $dataset->getTargets()); # This throws the error
Я использую PHP-AI / PHP-ML , и вот пример того, как работает AI с фреймом данных с предоставлением только 1 функции рамками.
Я понимаю ошибку, $dataset->getTargets()
содержит только 1 массив, где $samples
содержит 2 массива. Однако это поставило меня в тупик, поскольку так и должно быть (в теории).
Я храню классификатор (или обученный ИИ) как сериализованный объект в моей базе данных, как только он был обучен запоминать свое обученное состояние. Все работает нормально, когда я использую только фрейм данных с одной функцией. У кого-нибудь есть опыт использования PHP-AI в библиотеке PHP-ML, который может помочь?
Как я могу увеличить количество функций внутри PHP-AI?
Обновление, чтобы показать, какие значения хранятся в моих массивах:
$samples
выглядит так (массив братьев и сестер, массив супругов):
array ( 0 => array ( 0 => array ( ), 1 => array ( ), 2 => array ( ), 3 => array ( ), 4 => array ( ), 5 => array ( ), 6 => array ( ), 7 => array ( ), ), 1 => array ( 0 => array ( ), 1 => array ( ), 2 => array ( ), 3 => array ( ), 4 => array ( ), 5 => array ( ), 6 => array ( ), 7 => array ( ), ), )
$dataset->getTargets()
выглядит так (выжил или умер):
array ( 0 => '1', 1 => '1', 2 => '0', 3 => '1', 4 => '0', 5 => '0', 6 => '1', 7 => '1', )
Я считаю, что массив $samples
должен быть 1 массивом, содержащим дочерние массивы [SibSp, Spous]. Я не могу думать, как реорганизовать массив, чтобы быть таким.