libsvm自定义核函数并集成到weka
1 首先,在https://www.csie.ntu.edu.tw/~cjlin/libsvm/下载libsvm;
2 将代码导入到eclipse中;
3 打开libsvm包下的svm.java文件中。这边对核函数的修改主要在svm.java文件里面的Kernel类;
4 我们可以看到在Kernel里面定义了基本的特征运算,如dot()点积、powi()幂等,可用于线性核、多项式核的计算,
而关于核函数是在其中的kernel_function ()和k_function()函数中,前者用于训练阶段的核函数计算,
后者用于预测阶段的核函数计算。
5 修改 kernel_function 如下:这里的参数i,j含义分别是对应x[i]、x[j]样本。svm_parameter.NUM是自己添加的自定义核。
6 修改k_function
7 svm_parameter类中添加相应的核类型常数
8 修改svm.java中如下:
svm_check_parameter()修改如下:
9 接下来就是添加到weka中了
修改weka的LIBSVM如下:
10 接下来就是分别打包;这个也是之前加载自定义分类器时候没有提到的;
11 首先,weka通过packagemanage导入的是.zip文件 文件打包内容如下:
其中第三个和第四个是打包配置文件 具体修改见https://blog.****.net/So_that/article/details/82915198
而lib中有两个jar,一个是libsvm一个是LIBSVM;注意这两个不一样。
libsvm是官网下载的,LIBSVM是weka实现的。
因为 我们已经对这两个进行了修改所以需要重新打包成jar然后放到上面目录中lib中同其余三个文件一起打包成.zip文件
12 最后就是导入到weka了详见https://blog.****.net/So_that/article/details/82915198
13 效果展示