Классификация опорных векторов с php-ml не работает должным образом - PullRequest
0 голосов
/ 21 января 2019

Я начал играть с глубоким обучением. Первое, что я пытался построить, - это классификатор текста.

По сути, он должен сканировать текстовую строку на наличие таких шаблонов, как имена процессоров. И скажите мне, вероятно ли, что это линия, которую я ищу, или нет.

Я пробовал это на PHP 7.1 с php-ml 7.0, вот мой код:

<?php

require 'vendor/autoload.php';

use Phpml\Classification\SVC;
use Phpml\SupportVectorMachine\Kernel;
use Phpml\FeatureExtraction\TokenCountVectorizer;
use Phpml\Tokenization\WhitespaceTokenizer;

$vectorizer = new TokenCountVectorizer(new WhitespaceTokenizer());

$data = array_map('str_getcsv', file('csv/cpuRaw.csv'));
$samples = array();
$labels = array();

foreach ($data as $block) {
  $samples[] = $block[1];
  $labels[] = $block[0];
}

// Build the dictionary.
$vectorizer->fit($samples);

// Transform the provided text samples into a vectorized list.
$vectorizer->transform($samples);

$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
);

$classifier->train($samples, $labels);

$test = ['This is a sentence.'];
$vectorizer->fit($test);
$vectorizer->transform($test);

var_dump($classifier->predictProbability($test));

?>

CSV содержит следующее:

"CPU","Intel Xeon E3-1270V3"
"CPU","Intel Core i7-930"
"CPU","Intel Core i7-950"
"CPU","Intel Core i7-980x"
"CPU","Intel Xeon E3-1271V3"
"CPU","Intel Core i7-975"
"CPU","Intel Core i7-965"
"CPU","Intel Xeon E3-1275"
"CPU","Intel Core i7-980"
"CPU","Intel Core i7-990x"
"CPU","Intel Core i7-960x"

Это всегда, независимо от того, что дает мне Вероятность 1, которая, я думаю, равна 100%. Но это не правильно, он должен возвращать это только в определенных строках.

Может кто-нибудь сказать мне, если я облажался и почему?

...