ok i did more tests..
getting the source
https://github.com/ianbarber/php-svm/blob/master/tests/002_predict.phpt modified ..
<?php
$svm = new svmmodel();
//$result = $svm->load(dirname(__FILE__) . '/australian.model');
$result = $svm->load('australian.model');
if($result) {
$data = array(
"1" => 1,
2 => -0.731729,
3 => -0.886786,
4 => -1,
5 => 0.230769,
"6" => -0.25,
7 => -0.783509,
8 => 1,
9 => 1,
10 => "-0.820896",
11 => -1,
13 => -0.92,
"14" => "-1"
);
$result = $svm->predict($data);
if($result > 0) {
echo "ok";
print_r($result);
} else {
echo "predict failed: $result";
}
} else {
echo "loading failed";
}
?>
with additional https://github.com/ianbarber/php-svm/blob/master/tests/australian.scale dropped inside the test folder where .php file is located i am able after running to get the result:
================================
ok1
so it's workПримери
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
Примери
Референца за `svm.examples.php` со подобрена типографија и навигација.
Примери
The basic process is to define parameters, supply training data to generate a model on, then make predictions based on the model. There are a default set of parameters that should get some results with most any input, so we'll start by looking at the data.
Основната постапка е да се дефинираат параметри, да се обезбедат податоци за обука за генерирање модел, а потоа да се направат предвидувања врз основа на моделот. Постои стандарден сет на параметри кои треба да дадат некои резултати со речиси секој влез, па затоа ќе започнеме со разгледување на податоците.
-1 1:0.43 3:0.12 9284:0.2
Податоците се обезбедуваат или во датотека, поток или како низа. Ако се обезбедени во датотека или поток, мора да содржи еден ред по примерок за обука, кој мора да биде форматиран како цел број класа (обично 1 и -1) проследен со серија парови карактеристики/вредности, во растечки редослед на карактеристики. Карактеристиките се цели броеви, вредностите се децимални, обично скалирани 0-1. На пример:
Во проблем за класификација на документи, да речеме проверка за спам, секој ред би претставувал документ. Би имало две класи, -1 за спам, 1 за не-спам. Секоја карактеристика би претставувала некој збор, а вредноста би ја претставувала важноста на тој збор за документот (можеби бројот на појавувања, со вкупниот број скалиран до единечна должина). Карактеристиките што биле 0 (на пр. зборот воопшто не се појавил во документот) едноставно не би биле вклучени.
Во режим на низа, податоците мора да се поминат како низа од низи. Секоја подниза мора да ја има класата како прв елемент, потоа парови клуч => вредност за паровите вредности на карактеристиките.
Овие податоци се поминати на функцијата за обука на класата SVM, која ќе врати 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');
?>Горниот пример ќе прикаже нешто слично на:
int(-1)
Пример #1 Обука од низа
<?php
$svm = new SVM();
$model = $svm->train("traindata.txt");
?>Белешки од корисници 5 белешки
i forgot a detail!
the installation folders if you think to install it manually in windows xampp should be c:\xampp\php\lib\libsvm-3.1 (for the files i described in the first post) and extension in c:\xampp\php\ext (php_svm.dll)
works.good luckfrom pecl.php.net i download svm php_svm-0.2.3-8.1-ts-vs16-x64.zip so i read in README.md ..
=====================================================
Data is supplied in either a file, a stream, or as an an array. If supplied in a file or a stream, it must contain one line per training example, which must be formatted as an integer class (usually 1 and -1) followed by a series of feature/value pairs, in increasing feature order. The features are integers, the values floats, usually scaled 0-1. For example:
-1 1:0.43 3:0.12 9284:0.2
=====================================================
so creating traindata.txt with the content -1 1:0.43 3:0.12 9284:0.2 leads me to use it in the second example:
<?php
$svm = new SVM();
$model = $svm->train("traindata.txt");
$model->save('model2.svm');
?>
and running and editing the model2.svm i got the content:
-------------------------------------------------------------------
svm_type c_svc
kernel_type rbf
gamma 0.00010771219302024989
nr_class 1
total_sv 0
rho
label -1
nr_sv 0
SV
--------------------------------------------------------------------
so yes i think it's work, how i said i need to do more tests to get control with main functions to think to other more complicatedpremises:php 8.1 ,windows 64
----------------------------------
install (for beginners)
--------
after i visit https://github.com/ianbarber/php-svm
and i got from url found on page(install script)
.. http://www.csie.ntu.edu.tw/~cjlin/cgi-bin/libsvm.cgi?+http://www.csie.ntu.edu.tw/~cjlin/libsvm+tar.gz
and manual install it:
1.php.ini
(after the main group extension=... about 12 pieces)
...
extension=svm
...
2.I put manually inside php a folder called libsvm-3.1 then i unzip there libsvm.dll , libsvmread.mexw64 ,libsvmwrite.mexw64 , svmpredict.mexw64 , svm-predict.exe, svm-scale.exe , svm-toy.exe , svmtrain.mexw64, svm-train.exe !
running
<?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');
?>
via server(apache ,php,mariadb;even custom or xampp) now i got results:
i got model.svm with the content
================================
svm_type c_svc
kernel_type rbf
gamma 0.00010771219302024989
nr_class 2
total_sv 2
rho 0
label 1 -1
nr_sv 1 1
SV
1 1:0.22 5:0.01 94:0.11
-1 1:0.43 3:0.12 9284:0.2
=================================
so i think is very cool ..for a startup.
i will look around phpt files from github to understand why in yesterday's tests i got errors with some function witch require 2 parameters and not one like in the manualthe example rated negative rated by the guy sign "6765419 at qq dot com" also works too!
<?php
$data = array(
array(-1, 1 =>170, 2 => 60),//-1 表示男生,key 1表示身高,key 2表示体重=Represents a boy, key 1 represents height, key 2 represents weight
array(-1, 1 =>180, 2 => 70),
array(1, 1 => 160, 2 => 46),//1 表示女生,key 1表示身高,key 2表示体重=Represents a girl, key 1 represents height, key 2 represents weight
array(1, 1 => 155, 2 => 40),
);
$svm = new SVM();
$model = $svm->train($data);
$data = array( 1 => 165, 2 =>60);//测试数据 =Test Data
$result = $model->predict($data);
echo var_dump($result);//echo var_export($result);
//return;
?>
so i got :
float(-1)