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是自己添加的自定义核。

libsvm自定义核函数并集成到weka

6 修改k_function

libsvm自定义核函数并集成到weka

7 svm_parameter类中添加相应的核类型常数

libsvm自定义核函数并集成到weka

8  修改svm.java中如下:

libsvm自定义核函数并集成到weka

  svm_check_parameter()修改如下:

libsvm自定义核函数并集成到weka

9 接下来就是添加到weka中了

   修改weka的LIBSVM如下:

libsvm自定义核函数并集成到weka

10 接下来就是分别打包;这个也是之前加载自定义分类器时候没有提到的;

11 首先,weka通过packagemanage导入的是.zip文件 文件打包内容如下:

libsvm自定义核函数并集成到weka

其中第三个和第四个是打包配置文件 具体修改见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 效果展示

libsvm自定义核函数并集成到weka