Example #1
0
 public function train()
 {
     $svm = new SVM();
     $svm->setOptions(array(SVM::OPT_KERNEL_TYPE => SVM::KERNEL_LINEAR));
     $trainings = CM_Db_Db::select('cm_svmtraining', array('class', 'values'), array('svmId' => $this->getId()))->fetchAll();
     $problem = array();
     $classCounts = array();
     foreach ($trainings as $training) {
         $class = $training['class'];
         $values = unserialize($training['values']);
         if (!isset($classCounts[$class])) {
             $classCounts[$class] = 0;
         }
         $classCounts[$class]++;
         $problem[] = array_merge(array(0 => $class), $values);
     }
     $weights = array();
     foreach ($classCounts as $class => $count) {
         $weights[$class] = min($classCounts) / $count;
     }
     if (empty($weights)) {
         $weights = null;
     }
     $this->_model = $svm->train($problem, $weights);
     $this->_model->save($this->_getFilePath());
 }
Example #2
0
$minus = array();
foreach ($data as $el) {
    if ($el[0] == 1) {
        $plus[] = $el;
    } else {
        $minus[] = $el;
    }
}
$SVMProblems = array();
for ($i = 0; $i < 10; $i++) {
    shuffle($plus);
    shuffle($minus);
    $problem = array_merge(array_slice($plus, 0, count($plus) / 2), array_slice($minus, count($minus) / 2));
    $testProblem = array_merge(array_slice($plus, count($plus) / 2), array_slice($minus, 0, count($minus) / 2));
    // SVM object
    $svm = new SVM();
    $svm->setOptions(array(SVM::OPT_TYPE => SVM::C_SVC, SVM::OPT_KERNEL_TYPE => SVM::KERNEL_LINEAR));
    $model = $svm->train($problem);
    $target = array();
    foreach ($testProblem as $p) {
        unset($p[0]);
        $target[] = $model->predict($p);
    }
    $SVMProblems[] = new SVMProblem($testProblem, $target);
}
?>
<!DOCTYPE html>
<html lang="">
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
Example #3
0
<?php

require "SVM.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');