如何在CentOS 7上安装和使用Apache PredictionIO进行机器学习

当数据集达到一定大小时,无法使用传统的数据分析方法。分析海量数据的现代替代方法是使用机器学习方法。使用快速高效的算法时,机器学习能够产生准确的结果。

Apache PredictionIO是一个开源机器学习服务器,用于为任何机器学习任务创建预测引擎。通过使用可快速构建和部署的可定制引擎模板,它缩短了从实验室到生产的机器学习应用程序的时间。它提供了数据收集和服务组件,并抽象了底层技术以公开API,使开发人员可以专注于转换组件。一旦PredictionIO的引擎服务器被部署为Web服务,它就可以实时响应动态查询。

Apache PredictionIO由不同的组件组成。

  • PredictionIO Platform:一个开源的机器学习堆栈,它建立在一些最新的开源应用程序(例如Apache Spark,Apache Hadoop,Apache HBase和Elasticsearch)的顶部。
  • 事件服务器:它以实时模式或批处理模式连续从Web服务器或移动应用程序服务器收集数据。收集的数据可用于训练引擎或为数据分析提供统一的视图。事件服务器使用Apache HBase存储数据。
  • 引擎服务器:引擎服务器负责进行实际的预测。它从数据存储中读取训练数据,并使用一种或多种机器学习算法来构建预测模型。引擎一旦部署为Web服务,就会使用REST API或SDK响应由Web或移动应用程序进行的查询。
  • 模板库:此库提供各种类型的预构建引擎模板。您可以选择一个与用例相似的模板,然后根据需要进行修改。

先决条件

  • 具有至少8GB RAM的Vultr CentOS 7服务器实例。为了进行测试和开发,您可以选择一个具有4GB RAM和另一个4GB交换内存的实例。
  • 一个sudo的用户

在本教程中,我们将使用192.0.2.1服务器的公共IP地址。192.0.2.1用您的Vultr公共IP地址替换所有出现的。

使用指南如何更新CentOS 7更新基本系统。系统更新后,继续安装Java。

安装Java

PredictionIO的许多组件都需要JDK或Java Development Kit版本8才能工作。它同时支持OpenJDK和Oracle Java。在本教程中,我们将安装OpenJDK版本8。

OpenJDK可以轻松安装,因为该软件包在默认的YUM存储库中可用。

sudo yum -y install java-1.8.0-openjdk-devel

验证Java的版本以确保已正确安装。

java -version

您将获得类似的输出。

[user@vultr ~]$ java -version
openjdk version "1.8.0_151"
OpenJDK Runtime Environment (build 1.8.0_151-b12)
OpenJDK 64-Bit Server VM (build 25.151-b12, mixed mode)

在继续进行之前,我们需要设置JAVA_HOMEJRE_HOME环境变量。在系统中找到JAVA可执行文件的绝对路径。

readlink -f $(which java)

您将看到类似的输出。

[user@vultr ~]$ readlink -f $(which java)
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.151-1.b12.el7_4.x86_64/jre/bin/java

现在,根据Java目录的路径设置JAVA_HOMEJRE_HOME环境变量。

echo "export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.151-1.b12.el7_4.x86_64" >> ~/.bash_profile
echo "export JRE_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.151-1.b12.el7_4.x86_64/jre" >> ~/.bash_profile

执行bash_profile文件。

source ~/.bash_profile

现在,您可以运行echo $JAVA_HOME命令来检查是否设置了环境变量。

[user@vultr ~]$ echo $JAVA_HOME
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.151-1.b12.el7_4.x86_64

安装PredictionIO

Apache提供了PredictionIO源文件,可以在本地下载和编译这些文件。创建一个新的临时目录以下载并编译源文件。

mkdir /tmp/pio_sourcefiles && cd /tmp/pio_sourcefiles

使用任何Apache Mirror网站下载PredictionIO源文件档案。

wget http://apache.mirror.vexxhost.com/incubator/predictionio/0.12.0-incubating/apache-predictionio-0.12.0-incubating.tar.gz

提取档案并编译源以创建PredictionIO的分发。

tar xf apache-predictionio-0.12.0-incubating.tar.gz
./make-distribution.sh

上述利润分配将会对依赖,这是默认的版本中建Scala 2.11.8Spark 2.1.1Hadoop 2.7.3ElasticSearch 5.5.2。等待构建完成,这大约需要十分钟才能完成,具体取决于您系统的性能。

注意您可以自由使用依赖项的最新受支持版本,但是由于某些功能可能已被弃用,因此在构建过程中可能会看到一些警告。运行./make-distribution.sh -Dscala.version=2.11.11 -Dspark.version=2.1.2 -Dhadoop.version=2.7.4 -Delasticsearch.version=5.5.3,根据您的选择替换版本号。

构建成功完成后,您将在最后看到以下消息。

...
PredictionIO-0.12.0-incubating/python/pypio/__init__.py
PredictionIO-0.12.0-incubating/python/pypio/utils.py
PredictionIO-0.12.0-incubating/python/pypio/shell.py
PredictionIO binary distribution created at PredictionIO-0.12.0-incubating.tar.gz

PredictionIO二进制文件将保存在PredictionIO-0.12.0-incubating.tar.gz存档中。将归档文件提取到/opt目录中,并将所有权提供给当前用户。

sudo tar xf PredictionIO-0.12.0-incubating.tar.gz -C /opt/
sudo chown -R $USER:$USER /opt/PredictionIO-0.12.0-incubating

设置PIO_HOME环境变量。

echo "export PIO_HOME=/opt/PredictionIO-0.12.0-incubating" >> ~/.bash_profile
source ~/.bash_profile

安装必需的依赖项

创建一个新的目录来安装PredictionIO作为依赖这样HBaseSparkElasticsearch

mkdir /opt/PredictionIO-0.12.0-incubating/vendors

下载Scala 2.11.8版并将其解压缩到vendors目录中。

wget https://downloads.lightbend.com/scala/2.11.8/scala-2.11.8.tgz
tar xf scala-2.11.8.tgz -C /opt/PredictionIO-0.12.0-incubating/vendors

下载Apache Hadoop 2.7.3版并将其解压缩到vendors目录中。

wget https://archive.apache.org/dist/hadoop/common/hadoop-2.7.3/hadoop-2.7.3.tar.gz
tar xf hadoop-2.7.3.tar.gz -C /opt/PredictionIO-0.12.0-incubating/vendors

Apache Spark是PredictionIO的默认处理引擎。下载Spark版本2.1.1,并将其解压缩到vendors目录中。

wget https://archive.apache.org/dist/spark/spark-2.1.1/spark-2.1.1-bin-hadoop2.7.tgz
tar xf spark-2.1.1-bin-hadoop2.7.tgz -C /opt/PredictionIO-0.12.0-incubating/vendors

下载Elasticsearch版本5.5.2并将其解压缩到vendors目录中。

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.5.2.tar.gz
tar xf elasticsearch-5.5.2.tar.gz -C /opt/PredictionIO-0.12.0-incubating/vendors

最后,下载HBase 1.2.6版并将其解压缩到vendors目录中。

wget https://archive.apache.org/dist/hbase/stable/hbase-1.2.6-bin.tar.gz
tar xf hbase-1.2.6-bin.tar.gz -C /opt/PredictionIO-0.12.0-incubating/vendors

打开hbase-site.xml配置文件以配置HBase在独立环境中工作。

nano /opt/PredictionIO-0.12.0-incubating/vendors/hbase-1.2.6/conf/hbase-site.xml

找到空的配置块,然后将其替换为以下配置。

<configuration>
  <property>
    <name>hbase.rootdir</name>
    <value>file:///home/user/PredictionIO-0.12.0-incubating/vendors/hbase-1.2.6/data</value>
  </property>
  <property>
    <name>hbase.zookeeper.property.dataDir</name>
    <value>/home/user/PredictionIO-0.12.0-incubating/vendors/hbase-1.2.6/zookeeper</value>
  </property>
</configuration>

数据目录将由HBase自动创建。编辑HBase环境文件以设置JAVA_HOME路径。

nano /opt/PredictionIO-0.12.0-incubating/vendors/hbase-1.2.6/conf/hbase-env.sh

取消注释第27行,并将其设置JAVA_HOMEjreJava安装的路径。您可以使用以下readlink -f $(which java)命令找到JAVA可执行文件的路径。

# The java implementation to use.  Java 1.7+ required.
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.151-1.b12.el7_4.x86_64/jre

另外,请注释掉行号46和47,因为JAVA 8不需要它们。

# Configure PermSize. Only needed in JDK7. You can safely remove it for JDK8+
# export HBASE_MASTER_OPTS="$HBASE_MASTER_OPTS -XX:PermSize=128m -XX:MaxPermSize=128m"
# export HBASE_REGIONSERVER_OPTS="$HBASE_REGIONSERVER_OPTS -XX:PermSize=128m -XX:MaxPermSize=128m"

配置PredictionIO环境

PredictionIO环境文件中的默认配置pio-env.sh假定我们使用的是PostgreSQL或MySQL。当我们使用HBase和Elasticsearch时,我们将需要修改文件中几乎所有的配置。最好对现有文件进行备份,然后创建一个新的PredictionIO环境文件。

mv /opt/PredictionIO-0.12.0-incubating/conf/pio-env.sh /opt/PredictionIO-0.12.0-incubating/conf/pio-env.sh.bak

现在为PredictionIO环境配置创建一个新文件。

nano /opt/PredictionIO-0.12.0-incubating/conf/pio-env.sh

使用以下配置填充文件。

# PredictionIO Main Configuration
#
# This section controls core behavior of PredictionIO. It is very likely that
# you need to change these to fit your site.

# SPARK_HOME: Apache Spark is a hard dependency and must be configured.
SPARK_HOME=$PIO_HOME/vendors/spark-2.1.1-bin-hadoop2.7

# POSTGRES_JDBC_DRIVER=$PIO_HOME/lib/postgresql-42.0.0.jar
# MYSQL_JDBC_DRIVER=$PIO_HOME/lib/mysql-connector-java-5.1.41.jar

# ES_CONF_DIR: You must configure this if you have advanced configuration for
#              your Elasticsearch setup.
ES_CONF_DIR=$PIO_HOME/vendors/elasticsearch-5.5.2/config

# HADOOP_CONF_DIR: You must configure this if you intend to run PredictionIO
#                  with Hadoop 2.
HADOOP_CONF_DIR=$PIO_HOME/vendors/spark-2.1.1-bin-hadoop2.7/conf

# HBASE_CONF_DIR: You must configure this if you intend to run PredictionIO
#                 with HBase on a remote cluster.
HBASE_CONF_DIR=$PIO_HOME/vendors/hbase-1.2.6/conf

# Filesystem paths where PredictionIO uses as block storage.
PIO_FS_BASEDIR=$HOME/.pio_store
PIO_FS_ENGINESDIR=$PIO_FS_BASEDIR/engines
PIO_FS_TMPDIR=$PIO_FS_BASEDIR/tmp

# PredictionIO Storage Configuration
#
# This section controls programs that make use of PredictionIO's built-in
# storage facilities. Default values are shown below.
#
# For more information on storage configuration please refer to
# http://predictionio.incubator.apache.org/system/anotherdatastore/

# Storage Repositories

# Default is to use PostgreSQL
PIO_STORAGE_REPOSITORIES_METADATA_NAME=pio_meta
PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=ELASTICSEARCH

PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=pio_event
PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=HBASE

PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_model
PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=LOCALFS

# Storage Data Sources

# PostgreSQL Default Settings
# Please change "pio" to your database name in PIO_STORAGE_SOURCES_PGSQL_URL
# Please change PIO_STORAGE_SOURCES_PGSQL_USERNAME and
# PIO_STORAGE_SOURCES_PGSQL_PASSWORD accordingly
# PIO_STORAGE_SOURCES_PGSQL_TYPE=jdbc
# PIO_STORAGE_SOURCES_PGSQL_URL=jdbc:postgresql://localhost/pio
# PIO_STORAGE_SOURCES_PGSQL_USERNAME=pio
# PIO_STORAGE_SOURCES_PGSQL_PASSWORD=pio

# MySQL Example
# PIO_STORAGE_SOURCES_MYSQL_TYPE=jdbc
# PIO_STORAGE_SOURCES_MYSQL_URL=jdbc:mysql://localhost/pio
# PIO_STORAGE_SOURCES_MYSQL_USERNAME=pio
# PIO_STORAGE_SOURCES_MYSQL_PASSWORD=pio

# Elasticsearch Example
PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE=elasticsearch
PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS=localhost
PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS=9200
PIO_STORAGE_SOURCES_ELASTICSEARCH_SCHEMES=http
PIO_STORAGE_SOURCES_ELASTICSEARCH_CLUSTERNAME=pio
PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME=$PIO_HOME/vendors/elasticsearch-5.5.2

# Optional basic HTTP auth
# PIO_STORAGE_SOURCES_ELASTICSEARCH_USERNAME=my-name
# PIO_STORAGE_SOURCES_ELASTICSEARCH_PASSWORD=my-secret
# Elasticsearch 1.x Example
# PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE=elasticsearch
# PIO_STORAGE_SOURCES_ELASTICSEARCH_CLUSTERNAME=<elasticsearch_cluster_name>
# PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS=localhost
# PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS=9300
# PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME=$PIO_HOME/vendors/elasticsearch-1.7.6

# Local File System Example
PIO_STORAGE_SOURCES_LOCALFS_TYPE=localfs
PIO_STORAGE_SOURCES_LOCALFS_PATH=$PIO_FS_BASEDIR/models

# HBase Example
PIO_STORAGE_SOURCES_HBASE_TYPE=hbase
PIO_STORAGE_SOURCES_HBASE_HOME=$PIO_HOME/vendors/hbase-1.2.6

# AWS S3 Example
# PIO_STORAGE_SOURCES_S3_TYPE=s3
# PIO_STORAGE_SOURCES_S3_BUCKET_NAME=pio_bucket
# PIO_STORAGE_SOURCES_S3_BASE_PATH=pio_model

保存文件并退出编辑器。

打开Elasticsearch配置文件。

nano /opt/PredictionIO-0.12.0-incubating/vendors/elasticsearch-5.5.2/config/elasticsearch.yml

取消注释该行,并将群集名称设置为与PredictionIO环境文件中提供的名称完全相同。pio在上述配置中,群集名称设置为。

# Use a descriptive name for your cluster:
#
cluster.name: pio

现在,将$PIO_HOME/bin目录添加到PATH变量中,以便直接执行PredictionIO可执行文件。

echo "export PATH=$PATH:$PIO_HOME/bin" >> ~/.bash_profile
source ~/.bash_profile

此时,PredictionIO已成功安装在您的服务器上。

开始预测IO

您可以使用单个命令启动PredictionIO中的所有服务,例如Elasticsearch,HBase和事件服务器。

pio-start-all

您将看到以下输出。

[user@vultr ~]$ pio-start-all
Starting Elasticsearch...
Starting HBase...
starting master, logging to /opt/PredictionIO-0.12.0-incubating/vendors/hbase-1.2.6/bin/../logs/hbase-user-master-vultr.guest.out
Waiting 10 seconds for Storage Repositories to fully initialize...
Starting PredictionIO Event Server...

使用以下命令检查PredictionIO服务器的状态。

pio status

您将看到以下输出。

[user@vultr ~]$ pio status
[INFO] [Management$] Inspecting PredictionIO...
[INFO] [Management$] PredictionIO 0.12.0-incubating is installed at /opt/PredictionIO-0.12.0-incubating
[INFO] [Management$] Inspecting Apache Spark...
[INFO] [Management$] Apache Spark is installed at /opt/PredictionIO-0.12.0-incubating/vendors/spark-2.1.1-bin-hadoop2.7
[INFO] [Management$] Apache Spark 2.1.1 detected (meets minimum requirement of 1.3.0)
[INFO] [Management$] Inspecting storage backend connections...
[INFO] [Storage$] Verifying Meta Data Backend (Source: ELASTICSEARCH)...
[INFO] [Storage$] Verifying Model Data Backend (Source: LOCALFS)...
[INFO] [Storage$] Verifying Event Data Backend (Source: HBASE)...
[INFO] [Storage$] Test writing to Event Store (App Id 0)...
[INFO] [HBLEvents] The namespace pio_event doesn't exist yet. Creating now...
[INFO] [HBLEvents] The table pio_event:events_0 doesn't exist yet. Creating now...
[INFO] [HBLEvents] Removing table pio_event:events_0...
[INFO] [Management$] Your system is all ready to go.

从以上消息中可以看到,我们的系统已准备就绪,可用于实现引擎模板和预测数据。

实施引擎模板

PredictionIO模板库中提供了几个随时可用的引擎模板,可以轻松地将其安装在PredictionIO服务器上。您可以自由浏览引擎模板列表,以找到最符合您需求的模板,也可以编写自己的引擎。

在本教程中,我们将实现E-Commerce Recommendation引擎模板,以使用一些示例数据来演示PredictionIO服务器的功能。该引擎模板向电子商务网站中的用户提供一些个人推荐。默认情况下,它具有诸如排除缺货项目或向训练模型后注册的用户提供推荐等功能。另外,默认情况下,引擎模板会接受用户的查看和购买事件,具有类别和属性的项目以及不可用项目的列表。培训和部署引擎后,您可以发送查询,其中包含用户ID和建议的项目数。生成的输出将是推荐商品ID的排名列表。

安装Git,因为它将用于克隆存储库。

cd ~    
sudo yum -y install git

在系统上克隆“电子商务推荐器”引擎模板。

git clone https://github.com/apache/incubator-predictionio-template-ecom-recommender.git MyEComRecomm  

为电子商务建议模板引擎创建一个新的应用程序。PredictionIO中的每个应用程序都用于存储单独网站的数据。如果您有多个网站,则可以创建多个应用程序以将每个网站的数据存储到另一个应用程序中。您可以自由选择应用程序的任何名称。

cd MyEComRecomm/
pio app new myecom

您将看到以下输出。

[user@vultr MyEComRecomm]$ pio app new myecom
[INFO] [HBLEvents] The table pio_event:events_1 doesn't exist yet. Creating now...
[INFO] [App$] Initialized Event Store for this app ID: 1.
[INFO] [Pio$] Created a new app:
[INFO] [Pio$]       Name: myecom
[INFO] [Pio$]         ID: 1
[INFO] [Pio$] Access Key: a_DnDr4uyvjsKRldPoJAFMuPvb-QBz-BhUFyGehXoTKbm89r00Gx4ygnqspTJx4t

上面的输出还包含访问密钥,该访问密钥将在将输入数据发送到事件服务器时用于进行身份验证。

您始终可以通过运行找到访问密钥以及可用应用程序列表。

pio app list

您将看到以下输出,其中包含应用程序列表和访问密钥。

[user@vultr MyEComRecomm]$ pio app list
[INFO] [Pio$]                 Name |   ID |                                                       Access Key | Allowed Event(s)
[INFO] [Pio$]               myecom |    1 | a_DnDr4uyvjsKRldPoJAFMuPvb-QBz-BhUFyGehXoTKbm89r00Gx4ygnqspTJx4t | (all)
[INFO] [Pio$] Finished listing 1 app(s).

现在我们已经创建了一个新的应用程序,我们将向其中添加一些数据。在生产环境中,您希望通过将事件服务器API集成到应用程序中来自动将数据发送到事件服务器。要了解PredictionIO的工作原理,我们将一些样本数据导入其中。模板引擎提供了一个Python脚本,可以轻松使用该脚本将示例数据导入事件服务器。

安装Python pip。

sudo yum -y install python-pip
sudo pip install --upgrade pip

使用pip安装PredictionIO Python SDK。

sudo pip install predictionio

运行Python脚本以将示例数据添加到事件服务器。

python data/import_eventserver.py --access_key a_DnDr4uyvjsKRldPoJAFMuPvb-QBz-BhUFyGehXoTKbm89r00Gx4ygnqspTJx4t

确保将访问密钥替换为实际的访问密钥。您将看到类似的输出。

[user@vultr MyEComRecomm]$ python data/import_eventserver.py --access_key a_DnDr4uyvjsKRldPoJAFMuPvb-QBz-BhUFyGehXoTKbm89r00Gx4ygnqspTJx4t
Namespace(access_key='a_DnDr4uyvjsKRldPoJAFMuPvb-QBz-BhUFyGehXoTKbm89r00Gx4ygnqspTJx4t', url='http://localhost:7070')
{u'status': u'alive'}
Importing data...
('Set user', 'u1')
('Set user', 'u2')

...

('User', 'u10', 'buys item', 'i30')
('User', 'u10', 'views item', 'i40')
('User', 'u10', 'buys item', 'i40')
204 events are imported.

上面的脚本导入了10个用户,6个类别中的50个项目以及一些购买和观看的随机事件。要检查事件是否已导入,可以运行以下查询。

curl -i -X GET "http://localhost:7070/events.json?accessKey=a_DnDr4uyvjsKRldPoJAFMuPvb-QBz-BhUFyGehXoTKbm89r00Gx4ygnqspTJx4t"

输出将以JSON格式显示所有已导入事件的列表。

现在,将engine.json文件打开到编辑器中。该文件包含引擎的配置。

nano engine.json

查找出现的位置,appName然后用您之前创建的应用的实际名称替换该值。

{
  "id": "default",
  "description": "Default settings",
  "engineFactory": "org.example.ecommercerecommendation.ECommerceRecommendationEngine",
  "datasource": {
    "params" : {
      "appName": "myecom"
    }
  },
  "algorithms": [
    {
      "name": "ecomm",
      "params": {
        "appName": "myecom",
        "unseenOnly": true,
        "seenEvents": ["buy", "view"],
        "similarEvents": ["view"],
        "rank": 10,
        "numIterations" : 20,
        "lambda": 0.01,
        "seed": 3
      }
    }
  ]
}

生成应用程序。

pio build --verbose

如果您不想看到日志消息,请删除该--verbose选项。首次构建引擎模板将花费几分钟。构建成功完成后,您将看到类似的输出。

[user@vultr MyEComRecomm]$ pio build --verbose
[INFO] [Engine$] Using command '/opt/PredictionIO-0.12.0-incubating/sbt/sbt' at /home/user/MyEComRecomm to build.

...

[INFO] [Engine$] Build finished successfully.
[INFO] [Pio$] Your engine is ready for training.

现在训练引擎。在训练过程中,引擎将分析数据集并根据提供的算法进行自我训练。

pio train

在部署应用程序之前,我们需要打开端口,8000以便可以在Web GUI上查看应用程序的状态。同样,使用事件服务器的网站和应用程序也将通过此端口发送和接收其查询。

sudo firewall-cmd --zone=public --permanent --add-port=8000/tcp
sudo firewall-cmd --reload

现在,您可以部署PredictionIO引擎。

pio deploy

上面的命令将在端口上部署引擎和内置的Web服务器,8000以响应来自电子商务网站和应用程序的查询。成功部署引擎后,您将在最后看到以下输出。

[INFO] [HttpListener] Bound to /0.0.0.0:8000
[INFO] [MasterActor] Engine is deployed and running. Engine API is live at http://0.0.0.0:8000.

您可以http://192.0.2.1:8000使用任何现代浏览器来验证引擎的状态。确保将其替换192.0.2.1为实际的Vultr IP地址。

这表示电子商务建议引擎模板已部署并成功运行。您可以u5通过在新的终端会话中运行以下查询来查询引擎模板以为用户获取五项建议。

curl -H "Content-Type: application/json" \
-d '{ "user": "u5", "num": 5 }' \
http://localhost:8000/queries.json

您将看到为user生成的推荐u5

[user@vultr ~]$ curl -H "Content-Type: application/json" \
> -d '{ "user": "u5", "num": 5 }' \
> http://localhost:8000/queries.json
{"itemScores":[{"item":"i25","score":0.9985169366745619},{"item":"i10","score":0.996613946803819},{"item":"i27","score":0.996613946803819},{"item":"i17","score":0.9962796867639341},{"item":"i8","score":0.9955868705972656}]}

包起来

恭喜,Apache PredictionIO已成功部署在您的服务器上。现在,您可以使用事件服务器的API将数据导入引擎中,以预测对用户的建议。如果需要,可以使用模板库中的其他一些模板。确保检查出通用推荐引擎模板,该模板可用于几乎所有用例,包括电子商务,新闻或视频。



Leave a Comment

如何在CentOS 7上安装Oxwall

如何在CentOS 7上安装Oxwall

Oxwall是一个开源社交网络软件平台,可用于免费构建自定义社交网站(SNS)。在这篇文章中,

如何在CentOS 7上设置vsFTPd

如何在CentOS 7上设置vsFTPd

FTP是用于通过Internet传输文件的有用协议,本指南将向您展示如何设置vsFTPd(非常安全的文件传输协议守护程序)o

使用Nethogs监视网络带宽使用情况

使用Nethogs监视网络带宽使用情况

在本教程中,我们将介绍在CentOS 6x x64上安装和使用nethogs的过程。nethogs是一种网络监视工具,它允许Networ

如何在CentOS 7上安装BoltWire CMS

如何在CentOS 7上安装BoltWire CMS

使用其他系统?简介BoltWire是一个用PHP编写的免费,轻量级的内容管理系统。与大多数其他内容管理人员相比

在CentOS 6上设置SA-MP San Andreas多人服务器

在CentOS 6上设置SA-MP San Andreas多人服务器

欢迎来到另一个Vultr教程。在这里,您将学习如何安装和运行SAMP服务器。本指南是为CentOS 6编写的。先决条件

使用Etckeeper进行/ etc的版本控制

使用Etckeeper进行/ etc的版本控制

简介/ etc /目录在Linux系统运行中起着至关重要的作用。其原因是因为几乎每个系统配置

如何在CentOS 7上安装Microweber

如何在CentOS 7上安装Microweber

使用其他系统?Microweber是一个开放源代码的拖放式CMS和在线商店。Microweber源代码托管在GitHub上。本指南将向您展示

如何在CentOS 7上安装SonarQube

如何在CentOS 7上安装SonarQube

使用其他系统?SonarQube是用于质量系统开发的开源工具。它是用Java编写的,并且支持多个数据库。它提供

如何在CentOS 7上使用Mosh进行远程服务器管理

如何在CentOS 7上使用Mosh进行远程服务器管理

使用其他系统?Mosh是Mobile Shell的缩写,是一种新兴的远程终端应用程序,旨在提供更好的连接和使用

如何在CentOS 7上安装MoinMoin

如何在CentOS 7上安装MoinMoin

MoinMoin是一个使用Python编写的基于文件系统的开源Wiki引擎。如今,MoinMoin已广泛用于开源社区。许多供应商

在CentOS 7上安装H2O Web服务器

在CentOS 7上安装H2O Web服务器

H2O是新一代HTTP服务器,它对所有当前使用的Web服务器都具有出色的,功能齐全的HTTP / 2实现。使用H2O作为您的Web服务器

如何在Debian,CentOS和FreeBSD上使用Sudo

如何在Debian,CentOS和FreeBSD上使用Sudo

在Linux和Unix系统管理员中,使用sudo用户访问服务器并在root级执行命令是一种非常普遍的做法。使用泡沫

如何在Ubuntu 16.10上安装Countly Analytics

如何在Ubuntu 16.10上安装Countly Analytics

使用其他系统?Countly是一个开源Web /移动分析和营销平台。它具有许多用于从Web收集数据的功能

如何在CentOS 7上安装MODX CMS和Nginx

如何在CentOS 7上安装MODX CMS和Nginx

MODX是一个用PHP编写的免费开放源内容管理系统。它使用MySQL或MariaDB来存储其数据库。MODX专为满足以下条件的企业而设计:

如何在CentOS 7 LAMP VPS上安装Lychee 3.1相册

如何在CentOS 7 LAMP VPS上安装Lychee 3.1相册

使用其他系统?Lychee 3.1相册是一种简单,灵活,免费和开源的照片管理工具,可在VPS服务器上运行。安装

如何在CentOS 7上安装ERPNext开源ERP

如何在CentOS 7上安装ERPNext开源ERP

使用其他系统?ERP或企业资源计划是用于管理核心业务流程的企业应用程序套件。ERPNext是免费的

如何在CentOS 7 LAMP VPS上安装Paste 2.1

如何在CentOS 7 LAMP VPS上安装Paste 2.1

使用其他系统?Paste 2.1是一个简单,灵活,免费和开源的pastebin应用程序,用于存储代码,文本等。最初是

如何在CentOS 7上安装Seafile Server

如何在CentOS 7上安装Seafile Server

使用其他系统?Seafile(社区版本)是一个免费和开源的文件同步和共享解决方案,类似于ownCloud。机智

如何在CentOS 7上安装Kolab组件

如何在CentOS 7上安装Kolab组件

使用其他系统?Kolab Groupware是一个免费的基于Web的开源组件软件。它的功能包括电子邮件通信,事件

如何在CentOS 7 LAMP VPS上安装Omeka Classic 2.4 CMS

如何在CentOS 7 LAMP VPS上安装Omeka Classic 2.4 CMS

使用其他系统?Omeka Classic 2.4 CMS是一个免费的开源数字发布平台和用于共享数字内容的内容管理系统(CMS)

AI 能否應對越來越多的勒索軟件攻擊?

AI 能否應對越來越多的勒索軟件攻擊?

勒索軟件攻擊呈上升趨勢,但人工智能能否幫助應對最新的計算機病毒?AI 是答案嗎?在這裡閱讀知道是 AI 布恩還是禍根

ReactOS:這是 Windows 的未來嗎?

ReactOS:這是 Windows 的未來嗎?

ReactOS,一個開源和免費的操作系統,這裡有最新版本。它能否滿足現代 Windows 用戶的需求並打倒微軟?讓我們更多地了解這種老式但更新的操作系統體驗。

通過 WhatsApp 桌面應用程序 24*7 保持聯繫

通過 WhatsApp 桌面應用程序 24*7 保持聯繫

Whatsapp 終於為 Mac 和 Windows 用戶推出了桌面應用程序。現在您可以輕鬆地從 Windows 或 Mac 訪問 Whatsapp。適用於 Windows 8+ 和 Mac OS 10.9+

人工智能如何將流程自動化提升到新的水平?

人工智能如何將流程自動化提升到新的水平?

閱讀本文以了解人工智能如何在小型公司中變得流行,以及它如何增加使它們成長並為競爭對手提供優勢的可能性。

macOS Catalina 10.15.4 補充更新引發的問題多於解決

macOS Catalina 10.15.4 補充更新引發的問題多於解決

最近,Apple 發布了 macOS Catalina 10.15.4 補充更新以修復問題,但似乎該更新引起了更多問題,導致 mac 機器變磚。閱讀這篇文章以了解更多信息

大數據的13個商業數據提取工具

大數據的13個商業數據提取工具

大數據的13個商業數據提取工具

什麼是日誌文件系統,它是如何工作的?

什麼是日誌文件系統,它是如何工作的?

我們的計算機以稱為日誌文件系統的有組織的方式存儲所有數據。這是一種有效的方法,可以讓計算機在您點擊搜索時立即搜索和顯示文件。 https://wethegeek.com/?p=94116&preview=true

技術奇點:人類文明的遙遠未來?

技術奇點:人類文明的遙遠未來?

隨著科學的快速發展,接管了我們的大量工作,我們陷入無法解釋的奇點的風險也在增加。閱讀,奇點對我們意味著什麼。

洞察 26 種大數據分析技術:第 1 部分

洞察 26 種大數據分析技術:第 1 部分

洞察 26 種大數據分析技術:第 1 部分

2021 年人工智能對醫療保健的影響

2021 年人工智能對醫療保健的影響

過去幾十年,醫療保健領域的人工智能取得了巨大飛躍。因此,醫療保健中人工智能的未來仍在日益增長。