在上篇文章中对libsvm的流程和简单的java代码测试做了说明,本篇简单对libsvm如何在工程中实践进行简短说明,不当的地方欢迎大家指正。

第一步是对libsvm的预测函数进行调整,我是从svm_predict类中抽取部分代码组成预测防范,代码如下:

/**
     * 对传入的文本特征根据训练好的分类模型进行分类
     * @param model 已经训练好的模型
     * @param contentFeature    传入的计算好的文本分词后的特征
     * @return
     */
    public static int libSvmPredict(svm_model model, String contentFeature){
        //默认分类类别为-1
        int label = -1;
        //判断传入的文本特征是否为空
        if (contentFeature == null) return label;
        //对传入的特征进行切分
        StringTokenizer st = new StringTokenizer(contentFeature," \t\n\r\f:");
        //这里target用不到,测试中会用到,即我们测试语料的类别标签
//        double target = atof(st.nextToken());
        int m = st.countTokens()/2;
        svm_node[] x = new svm_node[m];
        for(int j=0;j<m;j++)
        {
            x[j] = new svm_node();
            x[j].index = atoi(st.nextToken());
            x[j].value = atof(st.nextToken());
        }

        double v = svm.svm_predict(model,x);
        label = (int) v;
        return label;
    }
View Code

相关文章:

  • 2021-11-05
  • 2022-02-01
  • 2021-04-19
  • 2021-07-22
  • 2021-09-13
  • 2021-09-15
猜你喜欢
  • 2021-08-21
  • 2022-12-23
  • 2022-12-23
  • 2021-12-27
  • 2022-12-23
  • 2021-11-27
  • 2021-08-11
相关资源
相似解决方案