基於Kubernetes的機器學習微服務系統設計系列——(七)分類器微服務
阿新 • • 發佈:2018-11-10
內容提要
分類器微服務主要實現如下分類選擇演算法: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: [email protected]</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:[email protected]</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
資訊: ==========================================================