使用libsvm进行分类预测

  • 时间:
  • 浏览:0
  • 来源:uu直播快3平台

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

预测分类

使用Eclipse一句话会直接输出到控制台。日后看一下预测的结果,保地处文件src/predict.txt中,内容如下所示:

训练分类模型

验证分类模型

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

里边的数据还要使用数字类型,类似于于类别,还还要通过不同的整数来表示不同的类别。

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

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

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

日后有或多或少还要,还还要适当修改libsvm进程运行,使其支持你我想要的输入输出法律方式。

使用Eclipse一句话,控制台输出的日后里边的内容,也日后亲们还还要直接用来训练的训练数据,将其存为文件train.txt。执行svm_scale命令,还输出一个多多多 规则文件(src/s_rules.txt):

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

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

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

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

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

或多或少 步对应于libsvm的缩放操作,即将量化的数据缩装下 去某一范围之内。首先,还要把原始的训练数据存装下 去文件中作为输入,日后实际应用中不还要从文件输入,还还要根据还要修改libsvm的代码,来满足还要。

里边准备的文件raw_data.txt定义了一个多多多 类别,分别为1,2,3,其中一个多多多多 属性。正常情况汇报下,每个属性值范围日后未必一定是在0到1之间,比如实际的温度数据,销售额数据,等等。

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

可见,模型的精度也有很高,只一个多多多多 预测与实际分类相符。亲们这里日后举个例子,数据又很少。实际分类过程中,日后冒出或多或少 精度很糙低的情况汇报,还要对分类模型进行调整,达到一个多多多 满意的分类精度。

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

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

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

数据格式:

准备训练数据

本实验中的参数-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,最后一个多多多 参数为均方误差。前一个多多多 参数还还要直接用于模型的训练。日后,根据搜索得到的参数,重新训练,得到模型。

数据缩放的区间为[0, 1],生成的缩放规则的文件存装下 去文件src/s_rules.txt中,最里边的文件src/raw_data.txt日后亲们进行分类的训练数据文件。

输入里边参数执行后,还还要看一遍归一化的数据,如下所示:

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

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

或多或少 命令一个多多多多 主要的作用:

归一化

训练分类模型的过程,日后够呢局前面归一化的样本数据,建立一个多多多 分类模型,日后根据或多或少 分类模型就不能进行分类的预测,这也是最终的目的。

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

以上哪此参数设置还还要按照SVM的类型和核函数所支持的参数进行任意组合,日后设置的参数在函数或SVM 类型中这麼 然完会产生影响,进程运行不用接受该参数;日后应有的参数设置不正确,参数将采用默认值。

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

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