如何使用libsvm进行回归预测
发布网友
发布时间:2022-04-26 09:34
我来回答
共1个回答
热心网友
时间:2022-04-12 11:33
<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中。
MATLAB SVM回归的工具包安装及相关问题
1. 将libsvm-master文件夹中的Windows和Matlab子文件夹路径添加到MATLAB的路径中,确保完整路径,避免仅添加Matlab文件夹导致问题。2. 在命令行窗口中,如果已安装C++编译环境,可以直接选择相应的环境。打开make.m文件,无需对3.25版本进行内部修改,直接运行。安装完成后,会生成4个.mexw64文件,安装过...
Matlab中libsvm回归怎么做时间序列的单步和多步预测
a(1)=0;for i=2:220 a(i)=0.6*a(i-1)+randn;endtrain_t = 1:200;train = a(train_t);train_t = train_t';train = train';test_t = 1:203;test=a(test_t);test_t = test_t';test = test';[bestmse,bestc,bestg] = SVMcgForRegress(train,train_t,-3,11,-7,1,...
如何利用python使用libsvm
用libsvm自带的脚本grid.py和easy.py,需要去官网下载绘图工具gnuplot,解压到c盘;进入c:\libsvm\tools目录下,用文本编辑器(记事本,edit都可以)修改grid.py和easy.py两个文件,找到其中关于gnuplot路径的那项,根据实际路径进行修改,并保存;例子举例 常用接口 提高预测的准确率 ...
什么是支持向量机(SVM)、libsvm及其应用
libsvm作为SVM的开源C++库,简化了SVM的使用,提供快速准确的分类和回归分析。它适用于文本分类、生物信息学、图像分类和特征选择等多种任务,通过核函数处理非线性问题。libsvm的优势包括高效、可扩展和模型参数的灵活性,但可能面临数据不平衡、参数调整和特征选择等挑战。SVM的应用广泛,涉及文本分类、图像...
matlab里用Libsvm得到模型但是无法得到预测精度
options') [predicted_label] = svmpredict(testing_label_vector, testing_instance_matrix, model, 'libsvm_options')因此,你要么返回一个predicted_label,要么返回三个。所以程序改成:[predict_label,accuracy, decision_values]=svmpredict(heart_scale_label,heart_scale_inst,model)...
如何使用libsvm进行分类
其实使用libsvm进行分类很简单,只需要有属性矩阵和标签,然后就可以建立分类模型(model),然后利用得到的这个model进行分类预测了。那神马是属性矩阵?神马又是标签呢?我举一个直白的不能在直白的例子:说一个班级里面有两个男生(男生1、男生2),两个女生(女生1、女生2),其中 男生1 身高:176...
FM算法介绍
要使用PAI的FM,数据必须采用libsvm格式,包含特征列和目标列。输入数据示例如图所示。FM训练在参数设置中,可以选择回归或分类模式,使用以下PAI命令进行训练:PAI命令备注:具体命令细节请参阅相关文档。FM预测同样,预测阶段也有相应的PAI命令,具体操作请参照官方指南。PAI命令 值得注意的是,以PAI FM训练...
跪求支持向量回归机SVR源代码(最好是java的,matlab也可以),感激不尽...
最有名的SVM程序包是台湾国立大学的林智仁教授开发的libSVM,直接在Google里面输入寻找官网下载,是C++编写,但有matlab接口,在本地编译后就可以使用,很方便。
如何利用python使用libsvm
1.打开IDLE(pythonGUI),输入>>>importsys>>>sys.version 2.如果你的python是32位,将出现如下字符:(default,Apr102012,23:31:26)[MSCv.150032bit(Intel)]’这个时候LIBSVM的python接口设置将非常简单。在libsvm-3.16文件夹下的windows文件夹中找到动态链接库libsvm.dll,将其添加到系统目录,如`...
怎么在在libsvm 中的matab 路径下运行程序
-libsvm_options:训练的参数,在第3点详细介绍。2. 预测libpredict函数用于对测试集的数据进行测试,还能对未知样本进行预测。[predicted_label, accuracy, decision_values/prob_estimates] = libsvmpredict(testing_label_vector, testing_instance_matrix, model [, 'libsvm_options']);这个函数包括四个参数,其中...