
第一步:下载java版libsvm312,解压。
第二步:打开java文件夹
第三步:建立项目,引用libsvm包
第五步:把第二步中的文件夹中四个文件复制到一个自定义的包中
第六步:写程序调用,代码如下,贴出来供大家学习,有不对的地方,欢迎拍砖。
import javaioIOException;
import libsvmsvm;
import libsvmsvm_model;
public class SVMTest {
public static void main(String[] args) throws IOException {
svm_train svmt = new svm_train();
svm_predict svmp = new svm_predict();
String[] argvTrain = {
"C:\\Users\\baolong\\Desktop\\KDD\\other\\svm\\train\\TR1data",// 训练文件
"C:\\Users\\baolong\\Desktop\\KDD\\other\\svm\\model\\MO1model"// 模型文件
};
String[] argvPredict = {
"C:\\Users\\baolong\\Desktop\\KDD\\other\\svm\\predict\\PR1data",// 预测文件
"C:\\Users\\baolong\\Desktop\\KDD\\other\\svm\\model\\MO1model", // 模型文件
"C:\\Users\\baolong\\Desktop\\KDD\\other\\svm\\result\\RE1out" // 预测结果文件
};
try {
svmtmain(argvTrain);
svmpmain(argvPredict);
} catch (IOException e) {
eprintStackTrace();
}
double[] record = { -1, 12, 12, 78 };
libsvmsvm_model model = svm
svm_load_model("C:\\Users\\baolong\\Desktop\\KDD\\other\\svm\\model\\MO1model");
Systemoutprintln(svmppredictPerRecord(record, model));
}
}
点击第一项即可。不行的话,直接换个验证过的系统盘重装系统就行了,这样就可以全程自动、顺利解决win7系统安装的问题了。用u盘或者硬盘这些都是可以的,且安装速度非常快。但关键是:要有兼容性好的(兼容ide、achi、Raid模式的安装)并能自动永久激活的、能够自动安装机器硬件驱动序的系统盘,这就可以全程自动、顺利重装系统了。方法如下:1、U盘安装:用ultraiso软件,打开下载好的系统安装盘文件(ISO文件),执行“写入映像文件”把U盘插到电脑上,点击“确定”,等待程序执行完毕后,这样就做好了启动及安装系统用的u盘,用这个做好的系统u盘引导启动机器后,即可顺利重装系统了;2、硬盘安装:前提是,需要有一个可以正常运行的Windows系统,提取下载的ISO文件中的“GHO”和“安装系统EXE”到电脑的非系统分区,然后运行“安装系统EXE”,直接回车确认还原 *** 作,再次确认执行自动安装 *** 作。(执行前注意备份C盘重要资料!);3、图文版教程:有这方面的详细图文版安装教程怎么给你?不能附加的。会被系统判为违规的。
可以利用libsvm工具箱中自带的k折交叉验证方法进行参数的寻优。
k折交叉验证的基本思想如下:
k个子集,每个子集均做一次测试集,其余的作为训练集。交叉验证重复k次,每次选择一个子集作为测试集,并将k次的平均交叉验证识别正确率作为结果。
libsvm工具箱中交叉验证的使用方法如下:
predict = trian(data_label, data_train, cmd);% train_label表示训练输出样本数据;
% data_train表示训练输入样本数据;
% cmd就是训练参数的设置,如设置为cmd='-v 5'就表示进行5折交叉验证(该设置中省略了其他参数的设置,即保存默认设置)。
你这个配置出现中文路径不推荐,告诉你一个最有效的方法,在dos里面直通通过:
set path=C:\Program Files\Java\jdk180_05\bin
set classpath=C:\Program Files\Java\jdk180_05\lib
这样管用如果不行;set classpath=C:\Program Files\Java\jdk180_05\lib;C:\Program Files\Java\jdk180_05\lib\toolsjar;C:\Program Files\Java\jdk180_05\lib\dtjar
以下两种方法,我已经亲测可用方法1:可以在其他朋友的电脑上进行编译,编译完后直接把libsvmreadmexw64、libsvmwritemexw64、svmpredictmexw64、svmtrainmexw64复制到你自己的程序中即可运行。这种方法的弊端是不同的算法程序中均需要复制一次。方法2:把编译完后的libsvmreadmexw64、libsvmwritemexw64、svmpredictmexw64、svmtrainmexw64这几个文件添加到F:\MATLAB2015aanzhuang\toolbox\libsvm-322\matlab下,即可
其实使用libsvm进行分类很简单,只需要有属性矩阵和标签,然后就可以建立分类模型(model),然后利用得到的这个model进行分类预测了。
一、属性矩阵和标签:
一个班级里面有两个男生(男生1、男生2),两个女生(女生1、女生2),其中
男生1 身高:176cm 体重:70kg;
男生2 身高:180cm 体重:80kg;
女生1 身高:161cm 体重:45kg;
女生2 身高:163cm 体重:47kg;
如果将男生定义为1,女生定义为-1,并将上面的数据放入矩阵data中,即
data = [176 70;
180 80;
161 45;
163 47];
复制代码
在label中存入男女生类别标签(1、-1),即
label = [1;1;-1;-1];
复制代码
这样上面的data矩阵就是一个属性矩阵,行数4代表有4个样本,列数2表示属性有两个,label就是标签(1、-1表示有两个类别:男生、女生)。
二、有了上面的属性矩阵data,和标签label就可以利用libsvm建立分类模型了,简要代码如下:
model = svmtrain(label,data);
复制代码
有了model就可以做分类预测,比如此时该班级又转来一个新学生,其
身高190cm,体重85kg
想通过上面这些信息就给出其标签(想知道其是男1还是女-1)
比如 令 testdata = [190 85]; 由于其标签不知道,假设其标签为-1(也可以假设为1)
即
testdatalabel = -1;
然后利用libsvm来预测这个新来的学生是男生还是女生,代码如下:
[predictlabel,accuracy] = svmpredict(testdatalabel,testdata,model)
复制代码
下面整体运行一下上面这段的背景数据和代码:
data = [176 70;
180 80;
161 45;
163 47];
label = [1;1;-1;-1];
model = svmtrain(label,data);
testdata = [190 85];
testdatalabel = -1;
[predictlabel,accuracy] = svmpredict(testdatalabel,testdata,model);
predictlabel
复制代码
运行结果如下:
Accuracy = 0% (0/1) (classification)
predictlabel =
以上就是关于如何调用libsvm 的java 库函数全部的内容,包括:如何调用libsvm 的java 库函数、新手求助,64位win7安装libsvm工具箱问题、matlab中使用libsvm如何实现参数寻优等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)