官术网_书友最值得收藏!

Engine design

The starting point of the application is the Engine. This is indicated in the engine.json file of your project shown as follows:

    {
"id": "default",
"description": "Default settings",
"engineFactory":
"org.template.recommendation.RecommendationEngine"
,
"datasource": {
"params" : {
"appName": "Recommenderapp"
}
},
"algorithms": [
----
}

The Engine class for our reference is written as follows:

    public class RecommendationEngine extends EngineFactory {
@Override
public BaseEngine<EmptyParams, Query, PredictedResult,
Set<String>> apply() {
return new Engine<>(
DataSource.class,
Preparator.class,
Collections.<String, Class<? extends
BaseAlgorithm<PreparedData,
?, Query, PredictedResult>>>singletonMap("algo",
Algorithm.class),
Serving.class
);
}
}

Key points to make a note from the preceding code are as follows:

  • An engine class extends from EngineFactory, which is provided by PredictionIO
  • The apply() interface method of the EngineFactory base class is overridden
  • The apply() method returns an instance of the engine class that has constructor parameters for the Datasource class, the Preparator class, the Singleton Map of Algorithm class, and the serving class

Let's observe the following lines of code:

    Collections.<String, Class<? extends BaseAlgorithm<PreparedData,
?, Query, PredictedResult>>>singletonMap(
"algo", Algorithm.class)

The preceding lines may be hard to interpret; class <? extends BaseAlgorithm<>> means that the type of the class is undetermined, but you are guaranteed that it extends BaseAlgorithm.

If you are familiar with Scala, the Scala code for the Engine would look as follows:

    object ECommerceRecommendationEngine extends IEngineFactory {
def apply() = {
new Engine(
classOf[DataSource],
classOf[Preparator],
Map("ecomm" -> classOf[ECommAlgorithm]),
classOf[Serving])
}
}
主站蜘蛛池模板: 沂源县| 漠河县| 彰化县| 河东区| 玛多县| 聂荣县| 视频| 大渡口区| 沭阳县| 洛南县| 齐河县| 哈巴河县| 北海市| 阿城市| 南溪县| 西青区| 龙南县| 神农架林区| 库伦旗| 大余县| 廉江市| 奉化市| 恭城| 定南县| 颍上县| 余姚市| 宿松县| 长泰县| 民县| 万载县| 临沂市| 崇明县| 乌鲁木齐县| 赤峰市| 定西市| 尼勒克县| 通城县| 南康市| 焉耆| 崇信县| 嘉义县|