重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
public class TestScale {
创新互联长期为近1000家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为普宁企业提供专业的成都网站建设、网站制作,普宁网站改版等技术服务。拥有十年丰富建站经验和众多成功案例,为您定制开发。
public static void main(String[] args) throws IOException {
String reafile = " "; // 文件路径
svm_scale svms = new svm_scale();
String[] srg = { reafile };//在这可以添加相关的系数"-l","0","-u","1","-s".以及要保存的scale参数文件
svms.main(srg);
}
}
第一步:下载java版libsvm3.12,解压。
第二步:打开java文件夹
第三步:建立项目,引用lib.svm包
第五步:把第二步中的文件夹中四个文件复制到一个自定义的包中
第六步:写程序调用,代码如下,贴出来供大家学习,有不对的地方,欢迎拍砖。
import java.io.IOException;
import libsvm.svm;
import libsvm.svm_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\\TR1.data",// 训练文件
"C:\\Users\\baolong\\Desktop\\KDD\\other\\svm\\model\\MO1.model"// 模型文件
};
String[] argvPredict = {
"C:\\Users\\baolong\\Desktop\\KDD\\other\\svm\\predict\\PR1.data",// 预测文件
"C:\\Users\\baolong\\Desktop\\KDD\\other\\svm\\model\\MO1.model", // 模型文件
"C:\\Users\\baolong\\Desktop\\KDD\\other\\svm\\result\\RE1.out" // 预测结果文件
};
try {
svmt.main(argvTrain);
svmp.main(argvPredict);
} catch (IOException e) {
e.printStackTrace();
}
double[] record = { -1, 12, 12, 78 };
libsvm.svm_model model = svm
.svm_load_model("C:\\Users\\baolong\\Desktop\\KDD\\other\\svm\\model\\MO1.model");
System.out.println(svmp.predictPerRecord(record, model));
}
}
手机应该不行。
SVM是什么?是一种比较新比较流行的算法,常常用在分类问题和回归问题上。
在我这里,我把它当做一种比较好使的分类器。
A.与NN比较起来,参数设定简单。
在NN里面一般需要设定隐藏层节点数,节点连接方式,训练算法等参数,
麻烦而且没办法预知哪些参数比较有效。
而在SVM里面根据核函数的不同一般只需要选择一个参数或者两个参数就可以
搞定。
B.NN容易陷入局部最优,SVM是求解的全局最优。
NN依初始值不同,有些时候会进入局部最优。SVM只会找到全局最优的唯一解。
C.libsvm是一个常用的SVM实现,有C和JAVA等多个版本。
输入输出的文件格式也非常简单,推荐使用。
libsvm虽然支持多类分类,但是其本质是基于“一对一”法的多类分类,因此究其其本质其实是个二分类svm。
既然是二分类,肯定有属于第一类-1的支持向量,属于第二类+1的支持向量,它肯定应该是个二维数组。
libsvm训练输出model中的参数有一个是sv_coef,它表示的是支持向量在决策函数中:
的系数a,而b是model里的rho。
最后说下model里全有啥参数:
model =
Parameters: svm的类型参数
nr_class: 有多少个类别
totalSV: 支持向量总个数
rho: 就是决策函数里那个b
Label: 类标
ProbA:
ProbB: 这两个是但svm 选-b是用到的参数
nSV: 每类有多少个支持向量
sv_coef: 决策函数那个a
SVs: 里面装的是所以支持向量
菜鸟个人愚见,如有错误望指正!共同学习
如果只是想用,可以调用ENVI的SVM~在ENVI帮助文档搜ENVI_SVM_DOIT
如果想看代码,我没编过,不过在百度文库看到一个,根据那个WORD里面的链接就能下下来了,不过是否正确不知道耶~
最有名的SVM程序包是台湾国立大学的林智仁教授开发的libSVM,直接在Google里面输入寻找官网下载,是C++编写,但有matlab接口,在本地编译后就可以使用,很方便。