1000个特征7个类别MATLAB中SVM得训练多久

1000个特征7个类别MATLAB中SVM得训练多久,第1张

3天

svm模型训练后的参数说明

现简单对屏幕回显信息进⾏说明:

#iter 为迭代次数,

nu 与前⾯的 *** 作参数 -n nu 相同,

obj 为 SVM ⽂件转换为的⼆次规划求解得到的最⼩值,

rho 为判决函数的常数项 b ,

nSV 为⽀持向量个数,

nBSV 为边界上的⽀持向量个数,

Total nSV 为⽀持向量总个数。

训练后的模型保存为⽂件 model ,⽤记事本打开其内容如下:

svm_type c_svc % 训练所采⽤的 svm 类型,此处为 C- SVC

kernel_type rbf % 训练采⽤的核函数类型,此处为 RBF 核

gamma 00769231 % 设置核函数中的 g ,默认值为 1/ k

nr_class 2 % 分类时的类别数,此处为两分类问题

total_sv 132 % 总共的⽀持向量个数

rho 0424462 % 决策函数中的常数项 b

label 1 -1% 类别标签

@微生豪资料集合分享

nr_sv 64 68 % 各类别标签对应的⽀持向量个数

SV % 以下为⽀持向量

1 1:0166667 2:1 3:-0333333 4:-043396

2 5:-0383562 6:-1 7:-1 8:0068702

3 9:-1 10:-0903226 11:-1 12:-1 13:1

05104832128985164 1:0125 2:1 3:0333333 4:-0320755 5:-0406393 6:1 7:1 8:00839695 9:1 10:-0806452 12:-0333333 13:05

1 1:0333333 2:1 3:-1 4:-0245283 5:-0506849 6:-1 7:-1 8:0129771 9:-1 10:-016129 12:0333333 13:-1

1 1:0208333 2:1 3:0333333 4:-0660377 5:-0525114 6:-1 7:1 8:0435115 9:-1 10:-0193548 12:-0333333 13:1

4 )采⽤交叉验证选择最佳参数 C 与 g

通常⽽⾔,⽐较重要的参数是 gamma (-g) 跟 cost (-c) 。⽽ cross validation (-v)

的参数常⽤ 5 。那么如何去选取最优的参数 c 和 g 呢? libsvm 的 python ⼦⽬录下⾯的 gridpy 可以帮助我们。 此时。其中安

装 python25 需要(⼀般默认安装到 c:/python25

下),将 gnuplot 解压。安装解压完毕后,进⼊ /libsvm/tools ⽬录下,⽤⽂本编辑器(记事

本, edit 都可以)修改 gridpy ⽂件,找到其中关于 gnuplot 路径的那项(其默认路径为

gnuplot_exe=r"c:/tmp/gnuplot/bin/pgnuplotexe" ),根据实际路径进⾏修改,并保存。然

后,将 gridpy 和 C:/Python25 ⽬录下的 pythonexe ⽂件拷贝到 libsvm/windows ⽬录下,键⼊以下命令: $ python gridpy

train1scale 执⾏后,即可得到最优参数 c 和 g 。

另外,⾄于下 libsvm 和 python 的接⼝的问题,在 libsvm286 中林⽼师已经帮助我们解决,在/libsvm/windows/python ⽬录下⾃带了 svmcpyd 这个⽂件,将该⽂件⽂件复制到

@微生豪资料集合分享

libsvm/python ⽬录下,同时,也将 pythonexe ⽂件复制到该⽬录下,键⼊以下命令以检验效

果(注意: Py ⽂件中关于 gnuplot 路径的那项路径⼀定要根据实际路径修改):

python svm_testpy

如果能看到程序执⾏结果,说明 libsvm 和 python 之间的接⼝已经配置完成,以后就可以直接在python 程序⾥调⽤ libsvm 的函数了!

5 ) 采⽤最佳参数 C 与 g 对整个训练集进⾏训练获取⽀持向量机模型

$ svmtrain –c x –g x –v x training_set_file [model_file]

x 为上述得到的最优参数 c 和 g 的值, v 的值⼀般取 5 。

6 )利⽤获取的模型进⾏测试与预测

使⽤ Svmtrain 训练好的模型进⾏测试。输⼊新的 X 值,给出 SVM 预测出的 Y 值

$ Svmpredict test_file model_file output_file

如: /svm-predict heart_scale heart_scalemodel heart_scaleout

Accuracy = 866667% (234/270) (classification)

这⾥显⽰的是结果

⼀个具体使⽤的例⼦。

以 libsvm 中的 heart_scale 作为训练数据和测试数据,同时已经将 python 安装⾄ c 盘,并将gridpy ⽂件中关于 gnuplot 路径的默认值修改为实际解压缩后的路径,将

heart_scale 、 gridpy 和 pythonexe 拷贝⾄ /libsvm/windows ⽂件夹下。

/svm-train heart_scale

optimization finished, #iter = 162

nu = 0431029

obj = -100877288, rho = 0424462

nSV = 132, nBSV = 107

Total nSV = 132

此时,已经得到 heart_scalemodel ,进⾏预测:

/svm-predict heart_scale heart_scalemodel heart_scaleout

Accuracy = 866667% (234/270) (classification)

正确率为 Accuracy = 866667% 。

/python gridpy heart_scale

得到最优参数 c=2048 , g=00001220703125

/svm-train -c 2048 -g 00001220703125 heart_scale 得到 model 后,由 /svm-predict heart_scale heart_scalemodel

heart_scaleout 得到的正确

率为 Accuracy = 851852%这块还有点迷惑?为什么正确率降低了?

当然也可以结合subsetpy 和 easypy 实现⾃动化过程。

@微生豪资料集合分享

如果要训练多次,可以写个批处理程序省好多事。

这⾥举个例⼦:

::@ echo off

cls

:: split the data and output the results

for /L %%i in (1,1,1000) do python subsetpy b59txt 546 b59(%%i)in8 b59(%%i)out2

for /L %%i in (1,1,1000) do python easypy b59(%%i)in8 b59(%%i)out2 >> result89txt

这段批处理代码⾸先调⽤subsetpy对⽂件b59txt执⾏1000次分层随机抽样(对数据进⾏80-20%分割)然后调⽤easypy 进⾏1000次参数寻优,把记录结果写到result89txt中

(包括1000次训练的分类准确率和参数对)。

还可以调⽤fselectpy进⾏特征选择,调⽤plotrocpy进⾏roc曲线绘制。

先写到这⾥吧,希望能和⼤家⼀起学习libsvm,进⼀步学好svm。

打开APP获取全文

已精选svm模型训练后会员文档796篇

MATLAB中SVM(支持向量机)的用法

31人阅读

OpencvSVM支持向量机参数与优化:

8人阅读

SVM参数设置及各种参数意义

32人阅读

sklearnsvm调参_SVM调优详解·7125messi的博客

ROC曲线,全称为“接收者 *** 作特征曲线”,是一种用于评价二分类模型性能的方法。ROC曲线是以真正率(True Positive Rate,TPR)为纵坐标,假正率(False Positive Rate,FPR)为横坐标,绘制出的一条曲线。

当使用某个分类器进行分类时,会按照不同的阈值(threshold)对分类结果进行划分,对于每个阈值,都可以计算出一组TPR和FPR。将这些点依次连接起来,就可以得到ROC曲线。

ROC曲线的纵轴代表模型的真正率(TPR),表示模型成功捕获到的正样本所占总正样本的比例;而横轴则代表模型的假正率(FPR),表示模型错误地将负样本判定为正样本所占总负样本的比例。

ROC曲线最重要的特点是,它可以直观地展示模型在不同阈值下的性能。当ROC曲线距离左上角越近时,模型的性能越好。在实际应用中,我们通常会选择ROC曲线上最靠近左上角的点对应的阈值,作为最终的分类阈值,以提高模型的准确率。

如果ROC曲线是折线,说明在某些阈值下,真正率和假正率的数值发生了变化。这可能是因为数据特征复杂,导致在不同的阈值下,模型的分类结果不稳定。在这种情况下,我们需要对模型进行调整,以提高其稳定性和准确率。

十折交叉验证是一种常用的机器学习模型训练方法,其目的是通过将数据集分为十个部分来迭代地训练和测试模型。为了绘制平均ROC,我们可以在每个折叠上计算ROC曲线,然后将它们加起来并计算平均值。可以使用Python中的Matplotlib库来绘制ROC曲线和平均ROC,其中每折的ROC曲线可以用不同的颜色来表示,平均ROC曲线可以用黑色线条表示。此外,我们还可以绘制ROC曲线下的面积(AUC),以便对模型的性能进行比较。

以上就是关于1000个特征7个类别MATLAB中SVM得训练多久全部的内容,包括:1000个特征7个类别MATLAB中SVM得训练多久、roc曲线是折线怎么处理、十折交叉验证如何绘制平均roc等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10163209.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存