<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/book.svm.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'ru',
  ),
  'this' => 
  array (
    0 => 'svm.examples.php',
    1 => 'Примеры',
    2 => 'Примеры',
  ),
  'up' => 
  array (
    0 => 'book.svm.php',
    1 => 'SVM',
  ),
  'prev' => 
  array (
    0 => 'svm.installation.php',
    1 => 'Установка',
  ),
  'next' => 
  array (
    0 => 'class.svm.php',
    1 => 'SVM',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'ru',
    'path' => 'reference/svm/examples.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="svm.examples" class="chapter">
 <h1 class="title">Примеры</h1>


 <p class="simpara">
  Процесс довольно прост: задаём параметры, предоставляем обучающие данные,
  на основе которых будет создана модель, а затем делаем прогнозы, основанные
  на этой модели. Набор параметров по умолчанию гарантирует получение
  хоть какого-то результата практически для любых входных данных, так что
  на нем останавливаться не будем и сразу перейдём к обучающим данным.
 </p>
 <p class="simpara">
  Есть три пути предоставления обучающих данных: файл, поток и массив.
  Если данные предоставляются с помощью файла или потока, то на каждой
  строке должен содержаться один обучающий пример, отформатированный
  следующим образом: в начале должно быть целое число  (обычно 1 или -1),
  это число обозначается термином &quot;класс&quot;, а следом за ним перечисление пар
  признак:значение в порядке увеличения признака. Признаки должны быть
  целыми числами, а их значения рациональными, обычно на диапазоне 0-1.
  Например:
 </p>
 <p class="simpara">
  -1 1:0.43 3:0.12 9284:0.2
 </p>
 <p class="simpara">
  В проблеме классификации документов, например, при проверке письма на спам,
  каждая строка должна представлять один документ. Для задачи проверки на спам
  нам понадобится два класса, -1 для спама и 1 для нормального письма.
  Каждый признак должен означать некое слово, а его значение - важность
  данного слова в документе (возможно, частота появления относительно длины
  элемента). Признаки со значением 0 (т.е. слово в документе не встречается)
  просто не включаем в набор.
 </p>
 <p class="simpara">
  В случае использования массива, данные должны быть представлены в
  виде массива массивов, в котором каждый вложенный массив должен
  первым элементом содержать класс, а все последующие элементы
  содержать пары &quot;признак&quot; =&gt; &quot;значение&quot;.
 </p>
 <p class="simpara">
  Эти данные передаются обучающей функции класса SVM, которая в результате
  вернёт модель (SVMModel).
 </p>
 <p class="simpara">
  Созданная модель может использоваться для построения предположений
  о классе новых объектов, описанных признаками и их значениями.
  Данные, на основе которых делаются предположения, должны быть
  переданы функции модели в том же формате, что описан выше, но
  без указания их класса (т.е. без первого элемента), которая вернёт
  предполагаемый класс, подходящий под эти данные.
 </p>
 <p class="simpara">
  Модель впоследствии можно сохранять и загружать с помощью функций,
  принимающих путь к файлу в качестве параметра.
 </p>
 <p class="para">
  <div class="example" id="example-1">
   <p><strong>Пример #1 Обучение из массива</strong></p>
   <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$data </span><span style="color: #007700">= array(<br />    array(-</span><span style="color: #0000BB">1</span><span style="color: #007700">, </span><span style="color: #0000BB">1 </span><span style="color: #007700">=&gt; </span><span style="color: #0000BB">0.43</span><span style="color: #007700">, </span><span style="color: #0000BB">3 </span><span style="color: #007700">=&gt; </span><span style="color: #0000BB">0.12</span><span style="color: #007700">, </span><span style="color: #0000BB">9284 </span><span style="color: #007700">=&gt; </span><span style="color: #0000BB">0.2</span><span style="color: #007700">),<br />    array(</span><span style="color: #0000BB">1</span><span style="color: #007700">, </span><span style="color: #0000BB">1 </span><span style="color: #007700">=&gt; </span><span style="color: #0000BB">0.22</span><span style="color: #007700">, </span><span style="color: #0000BB">5 </span><span style="color: #007700">=&gt; </span><span style="color: #0000BB">0.01</span><span style="color: #007700">, </span><span style="color: #0000BB">94 </span><span style="color: #007700">=&gt; </span><span style="color: #0000BB">0.11</span><span style="color: #007700">),<br />);<br /><br /></span><span style="color: #0000BB">$svm </span><span style="color: #007700">= new </span><span style="color: #0000BB">SVM</span><span style="color: #007700">();<br /></span><span style="color: #0000BB">$model </span><span style="color: #007700">= </span><span style="color: #0000BB">$svm</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">train</span><span style="color: #007700">(</span><span style="color: #0000BB">$data</span><span style="color: #007700">);<br /><br /></span><span style="color: #0000BB">$data </span><span style="color: #007700">= array(</span><span style="color: #0000BB">1 </span><span style="color: #007700">=&gt; </span><span style="color: #0000BB">0.43</span><span style="color: #007700">, </span><span style="color: #0000BB">3 </span><span style="color: #007700">=&gt; </span><span style="color: #0000BB">0.12</span><span style="color: #007700">, </span><span style="color: #0000BB">9284 </span><span style="color: #007700">=&gt; </span><span style="color: #0000BB">0.2</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$result </span><span style="color: #007700">= </span><span style="color: #0000BB">$model</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">predict</span><span style="color: #007700">(</span><span style="color: #0000BB">$data</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">$result</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$model</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">save</span><span style="color: #007700">(</span><span style="color: #DD0000">'model.svm'</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
   </div>

   
<div class="example-contents"><p>
 Вывод приведённого примера будет похож на:
</p></div>

   <div class="example-contents screen">
<div class="cdata"><pre>
int(-1)
</pre></div>
   </div>
  </div>
  <div class="example" id="example-2">
   <p><strong>Пример #2 Обучение из файла</strong></p>
   <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$svm </span><span style="color: #007700">= new </span><span style="color: #0000BB">SVM</span><span style="color: #007700">();<br /></span><span style="color: #0000BB">$model </span><span style="color: #007700">= </span><span style="color: #0000BB">$svm</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">train</span><span style="color: #007700">(</span><span style="color: #DD0000">"traindata.txt"</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
   </div>

  </div>
 </p>
</div>
<?php manual_footer($setup); ?>