使用libsvm进行分类预测

  • 时间:
  • 浏览:0
  • 来源:万人红黑大战棋牌APP_万人红黑大战棋牌APP官网

本实验中的参数-s取3,-t取2(默认)还需挑选的参数是-c,-g,-p。

另外,实验中所需调整的重要参数是-c 和 –g,-c和-g的调整除了本人根据经验试之外,还还后能 使用gridregression.py对这另一个参数进行优化。

该优化过程需要用到Python(2.5),Gnuplot(4.2),gridregression.py(该文件需要修改路径)。否则 在命令行下面运行:

python.exe gridregression.py -log2c -10,10,1 -log2g -10,10,1 -log2p -10,10,1 -s 3 –t 2 -v 5 -svmtrain E:/libsvm/libsvm-2.86/windows/svm-train.exe -gnuplot E:/libsvm/libsvm-2.86/gnuplot/bin/pgnuplot.exe E:/libsvm/libsvm-2.86/windows/train.txt > gridregression_feature.parameter

以上另一个路径根据实际安装情况报告进行修改。

-log2c是给出参数c的范围和步长

-log2g是给出参数g的范围和步长

-log2p是给出参数p的范围和步长

上边另一个参数还后能 用默认范围和步长。

-s挑选SVM类型,也是并能选3否则 4

-t是挑选核函数

-v 10 将训练数据分成10份做交叉验证,默认为5

为了方便将gridregression.py是存贴到 python.exe安装目录下,trian.txt为训练数据,参数存贴到 gridregression_feature.parameter中,还后能 本人命名。

搜索现在开始了后还后能 在gridregression_feature.parameter中最后一行看到最优参数。其中,最后一行的第另一个参数即为-c,第四个为-g,第另一个为-p,最后另一个参数为均方误差。前另一个参数还后能 直接用于模型的训练。否则 ,根据搜索得到的参数,重新训练,得到模型。

使用Eclipse得话会直接输出到控制台。否则 看一下预测的结果,保趋于稳定文件src/predict.txt中,内容如下所示:

你你你是什么步对应于libsvm的缩放操作,即将量化的数据缩贴到 某一范围之内。首先,需要把原始的训练数据存贴到 文件中作为输入,否则 实际应用中需要从文件输入,还后能 根据需要修改libsvm的代码,来满足需要。

上边准备的文件raw_data.txt定义了另一个类别,分别为1,2,3,其中含另一个属性。正常情况报告下,每个属性值范围否则 与非 只是一定是在0到1之间,比如实际的温度数据,销售额数据,等等。

libsvm通过使用svm_scale来实现归一化,下面是svm_scale的使用说明:

我们我们我们都输入如下参数,来执行数据的缩放操作:

预测分类的命令,说明如下所示:

使用libsvm,首先需要将实际待分类的内容或数据(训练数据,或预测数据)进行量化,否则 通过libsvm提供的功能实现分类和预测。下面介绍使用libsvm的基本步骤。

根据得出的分类模型,就还后能 进行分类预测了。

有关训练分类模型的优化,从参考链接中引用一段,有兴趣还后能 实际操作一下:

验证分类模型

准备训练数据

实际上预测分类的数据是类别未知的,我们我们我们都通过训练得出的分类器要做的事情只是挑选待预测数据的类别。使用libsvm默认是以文件的土办法输入数据,否则 预测要求的数据格式需要和训练时相同,什么都有有数据文件中第一列的类标签还后能 是随便给出的,分类器会处置数据,得出类别,否则 输出到指定的文件中。

预测分类和前面的“验证分类模型”中的执行过程是一样的。

否则 有有些需要,还后能 适当修改libsvmtcp连接池池,使其支持你愿意的输入输出土办法。

输入出的src/model.txt只是分类模型,模型数据的内容,如下所示:

归一化

结果会输出分类预测的精度:

数据缩放的区间为[0, 1],生成的缩放规则的文件存贴到 文件src/s_rules.txt中,最上边的文件src/raw_data.txt只是我们我们我们都进行分类的训练数据文件。

输入上边参数执行后,还后能 看到归一化的数据,如下所示:

数据格式:

你你你是什么命令有另一个主要的作用:

训练分类模型

使用Eclipse得话,控制台输出的只是上边的内容,也只是我们我们我们都还后能 直接用来训练的训练数据,将其存为文件train.txt。执行svm_scale命令,还输出另一个规则文件(src/s_rules.txt):

预测分类

这里,并能通过一组否则 知道类别的数据来做验证,并能知道分类器(基于分类模型数据)的精度如可。否则 分类器精度脚底,完正还后能 进行额外的参数寻优来调整模型。

准备验证分类器的数据(已知类标签,存为文件test.txt),如下所示:

可见,模型的精度完正与非 很高,并能另一个预测与实际分类相符。我们我们我们都这里只是举个例子,数据又很少。实际分类过程中,否则 老出你你你是什么精度怪怪的低的情况报告,需要对分类模型进行调整,达到另一个满意的分类精度。

训练分类模型的过程,只是够呢局前面归一化的样本数据,建立另一个分类模型,否则 根据你你你是什么分类模型就并能进行分类的预测,这也是最终的目的。

我们我们我们都看一下libsvm提供的训练模型的命令:

上边的数据是和训练数据属于同一类型的,即否则 知道类别,通过将其作为模拟的待预测数据来验证分类模型的准确度。

输入如下参数,进行模拟预测:

以上哪几种参数设置还后能 按照SVM的类型和核函数所支持的参数进行任意组合,否则 设置的参数在函数或SVM 类型中越来越 只是会产生影响,tcp连接池池后该接受该参数;否则 应有的参数设置不正确,参数将采用默认值。

training_set_file是要进行训练的数据集;model_file是训练现在开始了后产生的模型文件,该参数否则 不设置将采用默认的文件名,也还后能 设置成本人惯用的文件名。

针对上边归一化操作得到的训练数据,我们我们我们都通过输入如下参数并执行svmtrain命令进行训练:

每一行,表示以已定义的类别标签,以及属于该标签的各个属性值,每个属性值以“属性索引编号:属性值”的格式。一行内容表示另一个类别属性以及与该类别相关的各个属性的值。属性的值,一般还后能 表示为“该属性隶属于该类别的程度”,越大,表示该属性更能决定属性该类别。

上边的数据需要使用数字类型,类事 类别,还后能 通过不同的整数来表示不同的类别。

准备的原始训练样本数据存贴到 文件raw_data.txt中,内容如下所示: