昨天最大的收获就是明了了原来SVM中的SVC对我没用,因为它需要将数据分好类,对我有用的是SVR,用它来做回归,也就是拟合,效果据说不错~
今天就正式开始动手了,先简单的写了一个数据转换的类(以后要把所有的数据格式转换都放到这个类里面去,用不同的函数来调用),将模糊推理里用的数据转为libsvm指定的格式。然后在easy.py里在Cross validation和后面的Training里添加上了"-s 3",用教程里说的"python easy.py c-z-1.svm"来处理数据,结果是:“Best c=32768.0, g=0.5 CV rate=8.0785”!看起来好像不太妙,虽然还不是很清楚这里的CV rate是什么意思,但前面的c居然等于32768这么大的数,肯定是出问题了~
上网继续搜libsvm的使用,发现还有个gridregression.py的程序,好像是专门针对SVR进行grid搜索的。下载一看,就是在grid.py的基础上修改的,好像就是添加了一个-p,从而是搜索c,g,p三维空间,这下子搜索量就更大了!看来搞一个启发式的搜索最佳参数的算法还是很有必要的啊~
改了gridregression.py中的路径(后来发现其实不用改,因为用easy.py调用时会传入路径),在easy.py中也修改了相应的调用命令,得出的c,g,p都正常许多,CV rate值变成了一点多,看来是越小越好啊~
修改后的gridregression.py和easy.py都发到发芽网上去了。以后还要写个启发式搜索c,g,p的算法,不然运算量太大了,算一次得老半天,这可不行啊!
没有评论:
发表评论