Я начал играть с глубоким обучением.
Первое, что я пытался построить, - это классификатор текста.
По сути, он должен сканировать текстовую строку на наличие таких шаблонов, как имена процессоров.
И скажите мне, вероятно ли, что это линия, которую я ищу, или нет.
Я пробовал это на 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%. Но это не правильно, он должен возвращать это только в определенных строках.
Может кто-нибудь сказать мне, если я облажался и почему?