Как да инсталирате и използвате Apache PredictionIO за машинно обучение на CentOS 7

Традиционните подходи за анализ на данни са невъзможни за използване, когато наборите от данни достигнат определен размер. Модерна алтернатива за анализиране на огромни набори от данни е използването на методи за машинно обучение. Машинното обучение е в състояние да даде точни резултати при използване на бърз и ефективен алгоритъм.

Apache PredictionIO е сървър за машинно обучение с отворен код, използван за създаване на предсказуеми двигатели за всяка задача за машинно обучение. Той съкращава времето на приложението за машинно обучение от лаборатория до производство, като използва адаптивни шаблони на двигатели, които могат да бъдат създадени и внедрени бързо. Той предоставя компонентите за събиране и обслужване на данни и абстрактни технологии, за да разкрие API, който позволява на разработчиците да се съсредоточат върху компонентите за трансформация. След като сървърът на двигателя на PredictionIO бъде внедрен като уеб услуга, той може да отговаря на динамични заявки в реално време.

Apache PredictionIO се състои от различни компоненти.

  • PredictionIO Platform : Стек за машинно обучение с отворен код, изграден върху някои най-съвременни приложения с отворен код, като Apache Spark, Apache Hadoop, Apache HBase и Elasticsearch.
  • Сървър за събития : Това непрекъснато събира данни от вашия уеб сървър или сървър за мобилни приложения в режим в реално време или пакетен режим. Събраните данни могат да се използват за обучение на двигателя или за предоставяне на унифициран изглед за анализ на данните. Сървърът за събития използва Apache HBase за съхраняване на данните.
  • Сървър на двигателя: Сървърът на двигателя е отговорен за действителното прогнозиране. Той чете данните за обучение от хранилището на данни и използва един или повече алгоритъми за машинно обучение за изграждане на прогнозни модели. Двигател, след като бъде внедрен като уеб услуга, отговаря на заявките, направени от уеб или мобилно приложение, използвайки REST API или SDK.
  • Галерия с шаблони : Тази галерия предлага различни типове предварително изградени шаблони на двигатели. Можете да изберете шаблон, който е подобен на вашия случай на използване и да го модифицирате според вашите изисквания.

Предпоставки

В този урок ще използваме 192.0.2.1като публичен IP адрес на сървъра. Заменете всички поява на 192.0.2.1с вашия публичен IP адрес на Vultr.

Актуализирайте базовата си система с помощта на ръководството Как да актуализирате 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_HOMEи JRE_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_HOMEи JRE_HOMEпроменлива на средата според пътя на директорията на Java.

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

Изтеглете архива на изходния файл на PredictionIO, като използвате всеки сайт на Apache Mirror .

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.8, Spark 2.1.1, Hadoop 2.7.3и ElasticSearch 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 като HBase, Sparkи Elasticsearch.

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_HOMEпътя на jreвашата Java инсталация. Можете да намерите пътя до изпълнимия файл на JAVA с помощта на readlink -f $(which 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

Now create a new file for PredictionIO environment configuration.

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

Populate the file with the following configuration.

# 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

Save the file and exit from the editor.

Open the Elasticsearch configuration file.

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

Uncomment the line and set the cluster name to exactly the same as the one provided in the PredictionIO environment file. The cluster name is set to pio in the above configuration.

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

Now add the $PIO_HOME/bin directory into the PATH variable so that the PredictionIO executables are executed directly.

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

At this point, PredictionIO is successfully installed on your server.

Starting PredictionIO

You can start all the services in PredictionIO such as Elasticsearch, HBase and Event server using a single command.

pio-start-all

You will see the following output.

[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...

Use the following command to check the status of the PredictionIO server.

pio status

You will see the following output.

[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.

As we can see in the above messages, our system is ready to use for implementing an engine template and predicting data.

Implementing an Engine Template

Several ready to use engine templates are available on the PredictionIO Template Gallery which can be easily installed on the PredictionIO server. You are free to browse through the list of engine templates to find the one that is close to your requirements or you can write your own engine.

In this tutorial, we will implement the E-Commerce Recommendation engine template to demonstrate the functionality of PredictionIO server using some sample data. This engine template provides some personal recommendation to a user in an e-commerce website. By default, it has features such as excluding out of stock items or providing recommendations to a user who signs up after the model is trained. Also, by default, the engine template takes a user's view and buy events, items with categories and properties and list of unavailable items. Once the engine has been trained and deployed, you can send a query with the user id and number of items to be recommended. The generated output will be a ranked list of recommended item ids.

Install Git, as it will be used to clone the repository.

cd ~    
sudo yum -y install git

Clone the E-Commerce Recommender engine template on your system.

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

Create a new application for the E-Commerce Recommendation template engine. Each application in PredictionIO is used to store the data for a separate website. If you have multiple websites, then you can create multiple apps to store each website's data into a different application. You are free to choose any name for your application.

cd MyEComRecomm/
pio app new myecom

You will see the following output.

[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

The output above also contains the access key which will be used to authenticate when sending the input data to the event server.

You can always find the access key along with the list of available applications by running.

pio app list

You will see the following output containing a list of applications and the access key.

[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

Инсталирайте PredictionIO Python SDK с помощта на pip.

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 потребители, 50 артикула в 6 категории и някои произволни събития на покупка и прегледи. За да проверите дали събитията са импортирани или не, можете да изпълните следната заявка.

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така че състоянието на приложението да може да се види в уеб GUI. Също така, уебсайтовете и приложенията, използващи сървъра за събития, ще изпращат и получават своите заявки през този порт.

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

Сега можете да разгърнете двигателя PredictionIO.

pio deploy

Горната команда ще разгърне двигателя и вградения уеб сървър на порт, за 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с вашия действителен IP адрес на Vultr.

Това означава, че шаблонът на двигателя за препоръка за електронна търговия е внедрен и работи успешно. Можете да заявите шаблона на двигателя, за да извлечете пет препоръки за потребителя, u5като изпълните следната заявка в нова терминална сесия.

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

Ще видите генерираните препоръки за потребителя 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 на сървъра за събития, за да импортирате данните в двигателя, за да предвидите препоръките за потребителя. Ако желаете, можете да използвате някои други шаблони от галерията с шаблони. Не забравяйте да разгледате шаблона на двигателя Universal Recommender , който може да се използва в почти всички случаи на употреба, включително електронна търговия, новини или видео.


Инсталирайте Plesk на CentOS 7

Инсталирайте Plesk на CentOS 7

Използване на различна система? Plesk е собствен контролен панел за уеб хост, който позволява на потребителите да администрират своите лични и/или клиентски уебсайтове, бази данни

Как да инсталирате Squid Proxy на CentOS

Как да инсталирате Squid Proxy на CentOS

Squid е популярна, безплатна програма за Linux, която ви позволява да създадете уеб прокси за препращане. В това ръководство ще видите как да инсталирате Squid на CentOS, за да ви обърне

Как да инсталирате Lighttpd (LLMP стек) на CentOS 6

Как да инсталирате Lighttpd (LLMP стек) на CentOS 6

Въведение Lighttpd е форк на Apache, чиято цел е да бъде много по-малко ресурсоемка. Той е лек, откъдето идва и името му, и е доста лесен за използване. Инсталирайте

Конфигуриране на статична мрежа и IPv6 на CentOS 7

Конфигуриране на статична мрежа и IPv6 на CentOS 7

VULTR наскоро направи промени от своя страна и вече всичко трябва да работи добре от кутията с активиран NetworkManager. Ако желаете да деактивирате

Промяна на Icinga2 за използване на модел главен/клиент на CentOS 6 или CentOS 7

Промяна на Icinga2 за използване на модел главен/клиент на CentOS 6 или CentOS 7

Icinga2 е мощна система за наблюдение и когато се използва в модел главен-клиент, тя може да замени необходимостта от проверки на базата на NRPE. Главният клиент

Как да инсталирате Apache Cassandra 3.11.x на CentOS 7

Как да инсталирате Apache Cassandra 3.11.x на CentOS 7

Използване на различна система? Apache Cassandra е безплатна система за управление на база данни NoSQL с отворен код, която е проектирана да осигури мащабируемост, висока

Как да инсталирате Microweber на CentOS 7

Как да инсталирате Microweber на CentOS 7

Използване на различна система? Microweber е CMS и онлайн магазин с отворен код за плъзгане и пускане. Изходният код на Microweber се хоства на GitHub. Това ръководство ще ви покаже

Как да инсталирате Mattermost 4.1 на CentOS 7

Как да инсталирате Mattermost 4.1 на CentOS 7

Използване на различна система? Mattermost е самостоятелно хоствана алтернатива с отворен код на Slack SAAS услугата за съобщения. С други думи, с Mattermost, вие ca

Създаване на мрежа от сървъри на Minecraft с BungeeCord на Debian 8, Debian 9 или CentOS 7

Създаване на мрежа от сървъри на Minecraft с BungeeCord на Debian 8, Debian 9 или CentOS 7

Какво ви трябва Vultr VPS с поне 1 GB RAM. SSH достъп (с root/административни привилегии). Стъпка 1: Инсталиране на BungeeCord На първо място

Lets Encrypt на Plesk

Lets Encrypt на Plesk

Контролният панел на Plesk разполага с много приятна интеграция за Lets Encrypt. Lets Encrypt е един от единствените доставчици на SSL, които предоставят пълно сертификати

Позволява криптиране на cPanel

Позволява криптиране на cPanel

Lets Encrypt е сертифициращ орган, посветен на предоставянето на SSL сертификати безплатно. cPanel изгради чиста интеграция, така че вие ​​и вашият клиент

Как да инсталирате Concrete5 на CentOS 7

Как да инсталирате Concrete5 на CentOS 7

Използване на различна система? Concrete5 е CMS с отворен код, който предлага много отличителни и полезни функции за подпомагане на редакторите при лесното създаване на съдържание и

Как да инсталирате табло за преглед на CentOS 7

Как да инсталирате табло за преглед на CentOS 7

Използване на различна система? Review Board е безплатен инструмент с отворен код за преглед на изходен код, документация, изображения и много други. Това е уеб базиран софтуер

Настройте HTTP удостоверяване с Nginx на CentOS 7

Настройте HTTP удостоверяване с Nginx на CentOS 7

В това ръководство ще научите как да настроите HTTP удостоверяване за уеб сървър на Nginx, работещ на CentOS 7. Изисквания За да започнете, ще ви трябва

Как да инсталирате YOURLS на CentOS 7

Как да инсталирате YOURLS на CentOS 7

YOURLS (Your Own URL Shortener) е приложение за съкращаване на URL адреси и анализ на данни с отворен код. В тази статия ще разгледаме процеса на инсталиране

Как да инсталирате и конфигурирате ArangoDB на CentOS 7

Как да инсталирате и конфигурирате ArangoDB на CentOS 7

Използване на различна система? Въведение ArangoDB е NoSQL база данни с отворен код с гъвкав модел на данни за документи, графики и ключ-стойности. то е

Използване на Etckeeper за контрол на версиите на /etc

Използване на Etckeeper за контрол на версиите на /etc

Въведение Директорията /etc/ играе критична роля в начина, по който функционира една Linux система. Причината за това е, че почти всяка системна конфигурация

Защо трябва да използвате SSHFS? Как да монтирате отдалечена файлова система със SSHFS на CentOS 6

Защо трябва да използвате SSHFS? Как да монтирате отдалечена файлова система със SSHFS на CentOS 6

Много системни администратори управляват големи количества сървъри. Когато файловете трябва да бъдат достъпни на различни сървъри, влизането във всеки от тях поотделно ок

Настройване на сървър на Half Life 2 на CentOS 6

Настройване на сървър на Half Life 2 на CentOS 6

Този урок ще обхване процеса на инсталиране на сървър за игри Half Life 2 на CentOS 6 System. Стъпка 1: Инсталиране на предпоставките За да настроите ou

Как да инсталирате Laravel GitScrum на CentOS 7

Как да инсталирате Laravel GitScrum на CentOS 7

Laravel GitScrum или GitScrum е инструмент за производителност с отворен код, предназначен да помогне на екипите за разработка да внедрят методологията на Scrum по подобен начин.

Възходът на машините: Реални приложения на AI

Възходът на машините: Реални приложения на AI

Изкуственият интелект не е в бъдещето, тук е точно в настоящето. В този блог Прочетете как приложенията за изкуствен интелект са повлияли на различни сектори.

DDOS атаки: кратък преглед

DDOS атаки: кратък преглед

Вие също сте жертва на DDOS атаки и сте объркани относно методите за превенция? Прочетете тази статия, за да разрешите вашите запитвания.

Чудили ли сте се как хакерите печелят пари?

Чудили ли сте се как хакерите печелят пари?

Може би сте чували, че хакерите печелят много пари, но чудили ли сте се някога как печелят такива пари? нека обсъдим.

Революционни изобретения на Google, които ще улеснят живота ви.

Революционни изобретения на Google, които ще улеснят живота ви.

Искате ли да видите революционни изобретения на Google и как тези изобретения промениха живота на всяко човешко същество днес? След това прочетете в блога, за да видите изобретенията на Google.

Friday Essential: Какво се случи с колите, задвижвани от изкуствен интелект?

Friday Essential: Какво се случи с колите, задвижвани от изкуствен интелект?

Концепцията за самоуправляващи се автомобили да тръгват по пътищата с помощта на изкуствен интелект е мечта, която имаме от известно време. Но въпреки няколкото обещания, те не се виждат никъде. Прочетете този блог, за да научите повече…

Технологична сингулярност: далечно бъдеще на човешката цивилизация?

Технологична сингулярност: далечно бъдеще на човешката цивилизация?

Тъй като науката се развива с бързи темпове, поемайки много от нашите усилия, рискът да се подложим на необяснима сингулярност също нараства. Прочетете какво може да означава сингулярността за нас.

Еволюция на съхранението на данни – инфографика

Еволюция на съхранението на данни – инфографика

Методите за съхранение на данните може да се развиват от раждането на данните. Този блог обхваща развитието на съхранението на данни на базата на инфографика.

Функционалности на референтните архитектурни слоеве за големи данни

Функционалности на референтните архитектурни слоеве за големи данни

Прочетете блога, за да разберете различни слоеве в архитектурата на големи данни и техните функционалности по най-простия начин.

6 невероятни предимства от наличието на интелигентни домашни устройства в живота ни

6 невероятни предимства от наличието на интелигентни домашни устройства в живота ни

В този дигитално задвижван свят устройствата за интелигентен дом се превърнаха в решаваща част от живота. Ето няколко невероятни предимства на интелигентните домашни устройства за това как те правят живота ни струващ и по-опростен.

Актуализацията на допълнението на macOS Catalina 10.15.4 причинява повече проблеми, отколкото решава

Актуализацията на допълнението на macOS Catalina 10.15.4 причинява повече проблеми, отколкото решава

Наскоро Apple пусна macOS Catalina 10.15.4 допълнителна актуализация за отстраняване на проблеми, но изглежда, че актуализацията причинява повече проблеми, водещи до блокиране на mac машини. Прочетете тази статия, за да научите повече