理性思考,感性做事。 对我说点什么?
Categories: Digest, SVM | Tags: , | Views: 100 | Comments: 0

 

文字版来自: http://blog.sina.com.cn/s/blog_4e2c70250100blje.html

摸索着做了几个实验,试着把过程写下来,请大家指点。
<1> 下载Libsvm、Python和Gnuplot。我用的版本分别是:Libsvm(2.8.1),Python(2.4),Gnuplot(3.7.3)。注意:Gnuplot一定要用3.7.3版,3.7.1版的有bug.

<2> 修改训练和测试数据的格式(可以自己用perl编个小程序):
目标值 第一维特征编号:第一维特征值 第二维特征编号:第二维特征值 …

例如:
2.3 1:5.6 2:3.2
表示训练用的特征有两维,第一维是5.6,第二维是3.2,目标值是2.3

注意:训练和测试数据的格式必须相同,都如上所示。测试数据中的目标值是为了计算误差用

<3> 分别使用Libsvm中的Windows版本的工具svmscale.exe进行训练和测试数据的归一化,svmtrain.exe进行模型训练,svmpredict.exe进行预测
(1)svmscale.exe的用法:svmscale.exe feature.txt feature.scaled
默认的归一化范围是[-1,1],可以用参数-l和-u分别调整上界和下届,feature.txt是输入特征文件名
输出的归一化特征名为feature.scaled
(2)svmtrtrain.exe训练模型
我习惯写个批处理小程序,处理起来比较方便。例如svm_train.bat中训练语句为:
svmtrain.exe -s 3 -p 0.0001 -t 2 -g 32 -c 0.53125 -n 0.99 feature.scaled
训练得到的模型为feature.scaled.model

具体的参数含义可以参考帮助文档。这里-s是选择SVM的类型。对于回归来说,只能选3或者4,3表示epsilon-support vector regression, 4表示nu-support vector regression。-t是选择核函数,通常选用RBF核函数,原因在“A Practical Guide support vector classification”中已经简单介绍过了。-p尽量选个比较小的数字。需要仔细调整的重要参数是-c和-g。除非用gridregression.py来搜索最优参数,否则只能自己慢慢试了。

用gridregression.py搜索最优参数的方法如下:
python.exe gridregression.py -svmtrain H:\SVM\libsvm-2.81\windows\svmtrain.exe -gnuplot C:\gp373w32\pgnuplot.exe -log2c -10,10,1 -log2g -10,10,1 -log2p -10,10,1 -v 10 -s 3 -t 2 H:\SVM\libsvm-2.81\windows\feature.scaled > gridregression_feature.parameter

注意:-svmtrain是给出svmtrain.exe所在路径,一定要是完整的全路径
-gnuplot是给出pgnuplot.exe所在路径。这里要用pgnuplot.exe这种命令行形式的,不要用wgnupl32.exe,这个是图形界面的。
-log2c是给出参数c的范围和步长
-log2g是给出参数g的范围和步长
-log2p是给出参数p的范围和步长
上面三个参数可以用默认范围和步长
-s选择SVM类型,也是只能选3或者4
-t是选择核函数
-v 10 将训练数据分成10份做交叉验证。默认为5
最后给出归一化后训练数据的全路径
搜索最优参数的过程写入文件gridregression_feature.parameter(注意别少了这个>符号啊)

根据搜索到的最优参数修改feature.scaled.model中的参数
(3)用svmpredict.exe进行预测
svmpredict.exe feature_test.scaled feature.scaled.model feature_test.predicted
其中feature_test.scaled是归一化后的测试特征文件名,feature.scaled.model是训练好的模型,SVM预测的值在feature_test.predicted中。

READ MORE . . .

Categories: Js/AJAX | Tags: , , | Views: 143 | Comments: 0

 

前面用prototype写过一个div提示框(链接), 功能上还是有所限制. 现在用jquery改版了这个提示框, 增加的功能有:

1. N秒后自动关闭提示框

2. N关闭提示框执行一定的操作(可以设定)

3. 背景渐变暗

4. 支持ajax的get操作

5. 支持嵌入iframe

效果图可以见带即时验证的jQuery表单插件的后两张截图.

READ MORE . . .

Categories: PHP | Tags: , | Views: 97 | Comments: 2

 

写了一个功能相对比较全面的php分页类,包括两种分页模式,两种底部链接显示模式,可以进行任意搭配, 另外还包括服务端和客户端排序.

其中对数据库的操作采用的是这个类. 需要对$db按自己的实际情况进行实例化.

客户端排序需要jquery.js库文件和jquery.tablesorter.js文件.

先看两种分页模式的效果图:

paginate


 

paginate1



READ MORE . . .

Categories: PHP | Tags: | Views: 83 | Comment: 1
class dbconn {
	var $conn = 0;
	function dbconn($dbhost,$dbuser,$dbpw,$dbname){
		$this->conn = mysql_connect($dbhost,$dbuser,$dbpw);
		!$this->conn && $this->halt("Connect to MySQL failed");
		$serverinfo = mysql_get_server_info($this->conn);
		if ($serverinfo > '4.1' && $GLOBALS['charset']) {
			mysql_query("SET character_set_connection=".$GLOBALS['charset'].",character_set_results=".$GLOBALS['charset'].",character_set_client=binary",$this->conn);
		}
		if ($serverinfo > '5.0') {
			mysql_query("SET sql_mode=''",$this->conn);
		}
		if ($dbname && !@mysql_select_db($dbname,$this->conn)) {
			$this->halt('Cannot use database');
		}
	}
	function select_db($dbname){
		if (!@mysql_select_db($dbname,$this->conn)) {
			$this->halt('Cannot use database');
		}
	}
	function server_info(){
		return mysql_get_server_info($this->conn);
	}
	function insert_id(){
		$arr = $this->fetch_array('SELECT LAST_INSERT_ID() as id');
 
		return $arr["id"];
	}
	function get_value($SQL,$offset=0,$field=0){
		$rt = $this->fetch_all($SQL);
		if (isset($rt[$offset][$field])) {
			return $rt[$offset][$field];
		}
		return false;
	}
 
	function query($SQL,$method = null,$error = true){
		$query = mysql_query($SQL,$this->conn);
		!$query && $error && $this->halt('Query Error: '.$SQL);
		return $query;
	}
	function fetch_array($SQL){
		$query = $this->query($SQL);
		return mysql_fetch_array($query);
	}
	function fetch_all($SQL) {
		$arr = array();
		$query = $this->query($SQL);
		while($data = mysql_fetch_array($query)) {
			$arr[] = $data;
		}
		return $arr;
	}
	function affected_rows(){
		return mysql_affected_rows($this->conn);
	}
	function num_rows($SQL){
		$query = $this->query($SQL);
		if (!is_bool($query)) {
			return mysql_num_rows($query);
		}
		return 0;
	}
	function num_fields($SQL){
		$query = $this->query($SQL);
		return mysql_num_fields($query);
	}
	function escape_string($str){
		return mysql_escape_string($str);
	}
	function free_result(){
		$void = func_get_args();
		foreach ($void as $query) {
			if (is_resource($query) && get_resource_type($query)==='mysql result') {
				mysql_free_result($query);
			}
		}
		unset($void);
	}
	function close(){
		$this->free_result();
		return @mysql_close($this->conn);
	}
	function halt($msg=null){
		exit($msg.'<br /><br />'.$sql.'<br /> '.mysql_error());
	}
}
$db = new dbconn("localhost:3306","root","","howard");

 

Categories: Js/AJAX | Tags: , | Views: 154 | Comments: 0

 

jQuery已经是异常强大和方便了, 确实也如它所说,它改变着人们的javascript的编程习惯.

jQuery的插件也已经很多了很强大了,但有时候强大并不代表着好用.根据自己的需求写的插件更适合自己的口味.

先看一下这个插件的效果图:

其中的showAert函数,在稍后贴出, 所用的jQuery的版本是最新的1.3

form1 form2
form3 form4

  READ MORE . . .

Categories: BIO, SVM | Tags: , | Views: 294 | Comments: 3

 

前面对libsvm-2.88目录下的README进行了部分翻译, 似乎需要的朋友比较多, 这下对tools目录下的README进行了翻译. 给需要的朋友.

 这个目录中包括一些有用的程序:
1. 子集选择工具
2. 参数选择工具
3. LIBSVM格式检查工具

READ MORE . . .

Categories: Js/AJAX | Tags: , | Views: 192 | Comments: 0

 

1. 基本css选择器

选择器 描述
* 匹配任何元素
E 匹配标签名称为E的所有元素
E F 匹配标签名称为F,作为E的后代节点的所有元素
E>F 匹配标签名称为F,作为E的直接子节点的所有元素
E+F 匹配前面是邻近兄弟节点E的所有元素F(E和F紧挨着)
E~F 匹配前面是任何兄弟节点E的所有元素F(E和F可以不紧挨着)
E:has(F) 匹配标签名称为E,至少有一个标签名称为F的后代节点的所有元素
E.C 匹配带有类名C的所有元素E.   .C等效于*.C
E#I 匹配id特性值为I的元素E. #I等效于*#I
E[A] 匹配带有特性A的所有元素E(不管特性A的值是什么)
E[A=V] 匹配所有元素E,其特性A的值正好是V
E[A^=V] 匹配所有元素E,其特性A的值以V开头
E[A$=V] 匹配所有元素E,其特性A的值以V结尾
E[A*=V] 匹配所有元素E,其特性A的值包含V

READ MORE . . .

Categories: C/C++ | Tags: | Views: 134 | Comments: 0

 

有点类似于STL的map, 不过也有些不同.

map是无序的,但是我在里面加了一个vector来存储key,使之变为有序的,这样就可以同时采用下标进行访问.

先是这么多成员函数,边用边丰富吧.

通过下标访问的时候采用at函数,并且下标可以为负数.另外在向Array中添加元素的时候,如果这个元素的key存在,则更新这个key的value.

  READ MORE . . .

Categories: C/C++ | Tags: , , , | Views: 267 | Comments: 0

 

前面写过一个Perl版本, 但计算起来速度太慢, 改用C++试试.

理论算法在这里.

READ MORE . . .

Categories: C/C++ | Tags: , , | Views: 251 | Comments: 3

 

又做了一件无聊的事,把php里的字符串操作函数用c++写了一遍,备不时之需。

其中与HTML相关的函数,加密相关函数没有写。

另外,这些函数只是实现了功能,算法和效率上未经考究。

字符串的其他操作请见:C++标准库string类型的操作总结

其中包括的Array.h库在这里

READ MORE . . .

 Page 1 of 9  1  2  3  4  5 » ...  Last » 
TOP