基于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 |
作者简介 | |
兴趣爱好 | 机器学习、云计算、自然语言处理、文本分类、深度学习 |
xsd-jj@163.com (欢迎交流) |