mirror of
https://github.com/php/doc-ru.git
synced 2026-03-23 23:32:16 +01:00
119 lines
5.5 KiB
XML
119 lines
5.5 KiB
XML
<?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>
|
||
В случае использования массива, данные должны быть представлены в
|
||
виде массива массивов, в котором каждый вложенный массив должен
|
||
первым элементом содержать класс, а все последующие элементы
|
||
содержать пары "признак" => "значение".
|
||
</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
|
||
-->
|