1
0
mirror of https://github.com/php/doc-ru.git synced 2026-03-23 23:32:16 +01:00
Files
archived-doc-ru/reference/svm/examples.xml
2026-01-26 14:48:43 +00:00

119 lines
5.5 KiB
XML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 1ca2d4af9471f44743281e6949cb53b8afcaefb8 Maintainer: rjhdby Status: ready -->
<!-- Reviewed: no -->
<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="svm.examples">
&reftitle.examples;
<simpara>
Процесс довольно прост: задаём параметры, предоставляем обучающие данные,
на основе которых будет создана модель, а затем делаем прогнозы, основанные
на этой модели. Набор параметров по умолчанию гарантирует получение
хоть какого-то результата практически для любых входных данных, так что
на нем останавливаться не будем и сразу перейдём к обучающим данным.
</simpara>
<simpara>
Есть три пути предоставления обучающих данных: файл, поток и массив.
Если данные предоставляются с помощью файла или потока, то на каждой
строке должен содержаться один обучающий пример, отформатированный
следующим образом: в начале должно быть целое число (обычно 1 или -1),
это число обозначается термином "класс", а следом за ним перечисление пар
признак:значение в порядке увеличения признака. Признаки должны быть
целыми числами, а их значения рациональными, обычно на диапазоне 0-1.
Например:
</simpara>
<simpara>
-1 1:0.43 3:0.12 9284:0.2
</simpara>
<simpara>
В проблеме классификации документов, например, при проверке письма на спам,
каждая строка должна представлять один документ. Для задачи проверки на спам
нам понадобится два класса, -1 для спама и 1 для нормального письма.
Каждый признак должен означать некое слово, а его значение - важность
данного слова в документе (возможно, частота появления относительно длины
элемента). Признаки со значением 0 (т.е. слово в документе не встречается)
просто не включаем в набор.
</simpara>
<simpara>
В случае использования массива, данные должны быть представлены в
виде массива массивов, в котором каждый вложенный массив должен
первым элементом содержать класс, а все последующие элементы
содержать пары "признак" =&gt; "значение".
</simpara>
<simpara>
Эти данные передаются обучающей функции класса SVM, которая в результате
вернёт модель (SVMModel).
</simpara>
<simpara>
Созданная модель может использоваться для построения предположений
о классе новых объектов, описанных признаками и их значениями.
Данные, на основе которых делаются предположения, должны быть
переданы функции модели в том же формате, что описан выше, но
без указания их класса (т.е. без первого элемента), которая вернёт
предполагаемый класс, подходящий под эти данные.
</simpara>
<simpara>
Модель впоследствии можно сохранять и загружать с помощью функций,
принимающих путь к файлу в качестве параметра.
</simpara>
<para>
<example>
<title>Обучение из массива</title>
<programlisting role="php">
<![CDATA[
<?php
$data = array(
array(-1, 1 => 0.43, 3 => 0.12, 9284 => 0.2),
array(1, 1 => 0.22, 5 => 0.01, 94 => 0.11),
);
$svm = new SVM();
$model = $svm->train($data);
$data = array(1 => 0.43, 3 => 0.12, 9284 => 0.2);
$result = $model->predict($data);
var_dump($result);
$model->save('model.svm');
?>
]]>
</programlisting>
&example.outputs.similar;
<screen>
<![CDATA[
int(-1)
]]>
</screen>
</example>
<example>
<title>Обучение из файла</title>
<programlisting role="php">
<![CDATA[
<?php
$svm = new SVM();
$model = $svm->train("traindata.txt");
?>
]]>
</programlisting>
</example>
</para>
</chapter>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->