基于Kubernetes、Docker的机器学习微服务系统设计系列——(七)分类器微服务

该博客介绍了如何在Kubernetes和Docker环境中设计一个基于微服务的机器学习系统,特别是聚焦于分类器服务。内容包括分类器的类图设计,如kNN、NB、SVM和NLV算法的实现,以及服务的请求和响应JSON格式。此外,还提供了部分代码实现和DEBUG信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基于Kubernetes、Docker的机器学习微服务系统设计
实践篇(1)概念与构想(二)架构与部署(三)微服务框架(四)中文分词(五)预处理
(六)特征选择(七)分类器微(八)部署配置(九)应用服务(十)数据可视化
研究篇RS中文分词MP特征选择NLV文本分类快速kNN文本分类

  分类器微服务主要实现如下分类选择算法:k-Nearest Neighbor(kNN)、Naïve Bayes(NB)、Support Vector Machine(SVM)、Normalized Vector(NLV)。

分类器类图

  分类器服务主要类图如下图所示:

分类器服务主要类图

部分代码实现

文本分类-训练器抽象类

package com.robin.classifier;

import com.robin.log.RobinLogger;
import java.util.logging.Logger;
import org.codehaus.jettison.json.JSONObject;

/**
 * <DT><B>描述:</B></DT>
 * <DD>文本分类-训练器</DD>
 *
 * @version Version1.0
 * @author Robin
 * @version <I> Date:2018-04-06</I>
 * @author  <I> E-mail:xsd-jj@163.com</I>
 */
public abstract class AbstractTrainer {

    // 日志
    protected static final Logger LOGGER = RobinLogger.getLogger();

    // 训练集JSON
    protected JSONObject trainSetJson;

    /**
     * 训练器抽象类构造方法
     *
     * @param trainSetJson
     */
    public AbstractTrainer(JSONObject trainSetJson) {
        this.trainSetJson = trainSetJson;
    }

    /**
     * 训练分类器抽象方法
     */
    public abstract void trains();
}

文本分类-分类器抽象类

package com.robin.classifier;

import com.robin.log.RobinLogger;
import java.util.HashMap;
import java.util.Map;

import java.util.logging.Logger;
import org.codehaus.jettison.json.JSONObject;

/**
 * <DT><B>描述:</B></DT>
 * <DD>文本分类-分类器抽象类</DD>
 *
 * @version Version1.0
 * @author Robin
 * @version <I> Date:2018-04-06</I>
 * @author  <I> E-mail:xsd-jj@163.com</I>
 */
public abstract class AbstractClassifier {

    // 日志记录器
    protected static final Logger LOGGER = RobinLogger.getLogger();
    // 保存分类结果的矩阵
    protected Map<String, HashMap<String, Integer>> matrixMap;
    // 测试集JSON
    protected JSONObject testSetJson;

    /**
     * 分类器构造方法
     *
     * @param testSetJson
     */
    public AbstractClassifier(JSONObject testSetJson) {
        this.testSetJson = testSetJson;
    }

    /**
     * 分类器分类抽象方法
     */
    public abstract void classifies();

    /**
     * 获取分类简单结果矩阵
     *
     * @return 简单结果矩阵
     */
    public Map<String, HashMap<String, Integer>> getMatrixMap() {
        return matrixMap;
    }
    
}

请求JSON

  分类器微服务请求的JSON格式如下,红框部分为配置参数。

响应JSON

  分类器微服务响应的JSON格式如下,红框部分为分类结果。

DEBUG信息

信息:   NLV-500-MP-GLOBAL-OPEN-ROOT-2-INNER_PRODUCT
信息:   ----Config----------------------------
信息:   FeatureRange       : GLOBAL
信息:   Dimension          : 500
信息:   TestType           : OPEN
信息:   AlgorithmName      : NLV
信息:   FeatureName        : MP
信息:   ----Args------------------------------
信息:   RootIndex	       : 2
信息:   SimilarityType	   : INNER_PRODUCT
信息:   NormalizedType	   : ROOT
信息:      
   -------------------- 分 类 结 果 混 淆 矩 阵 --------------------
   ---------------------------------------------------------------
   类别        人才    体育    信息     娱乐    房产    汽车    总计 
   ---------------------------------------------------------------
   人才         64       0       0       1       4       1      70
   体育          0      97       0       1       0       2     100
   信息          1       0     113       0       1       1     116
   娱乐          0       4       1      90       2       1      98
   房产          0       0       1       0      94       0      95
   汽车          1       0       0       0       1      84      86
   ---------------------------------------------------------------
   文本数       66     101     115      92     102      89     565
   ---------------------------------------------------------------
   召回率    96.97   96.04   98.26   97.83   92.16   94.38   95.94
   ---------------------------------------------------------------
   精准率    91.43   97.00   97.41   91.84   98.95   97.67   95.72
   ---------------------------------------------------------------
   F1评测    94.12   96.52   97.84   94.74   95.43   96.00   95.83
   ---------------------------------------------------------------

信息:    Train time(ms)    : 9
信息:    Classify time(ms) : 9
信息:    MacroRecall(%)    : 95.94
信息:    MacroPrecision(%) : 95.72
信息:    Macro F1(%)       : 95.83
信息:    Micro F1(%)       : 95.93
信息:    Current time(ms)  : 1541671120162
信息:   ==========================================================
知更鸟博文推荐
上一篇 基于Kubernetes、Docker的机器学习微服务系统设计系列——(六)特征选择微服务
下一篇 基于Kubernetes、Docker的机器学习微服务系统设计系列——(八)部署配置
推荐篇 基于Kubernetes、Docker的机器学习微服务系统设计——完整版
研究篇 RS中文分词   |  MP特征选择   |  NLV文本分类   |  快速kNN
作者简介
兴趣爱好机器学习、云计算、自然语言处理、文本分类、深度学习
E-mailxsd-jj@163.com (欢迎交流)
版权声明:个人原创,请勿抄袭,欢迎引用,未经许可禁止转载. © 知更鸟
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值