Az Apache PredictionIO telepítése és használata a gépi tanuláshoz CentOS 7 rendszeren

Az adatelemzés hagyományos megközelítései nem használhatók, ha az adatkészletek elérnek egy bizonyos méretet. A hatalmas adathalmazok elemzésének modern alternatívája a gépi tanulási módszerek alkalmazása. A gépi tanulás pontos eredményeket tud produkálni, ha gyors és hatékony algoritmust használ.

Az Apache PredictionIO egy nyílt forráskódú gépi tanulási kiszolgáló, amely prediktív motorok létrehozására szolgál bármilyen gépi tanulási feladathoz. Lerövidíti a gépi tanulási alkalmazás idejét a labortól a gyártásig, testreszabható motorsablonok használatával, amelyek gyorsan megépíthetők és telepíthetők. Ez biztosítja az adatgyűjtési és -kiszolgáló összetevőket, valamint a mögöttes technológia kivonatait, hogy felfedjen egy API-t, amely lehetővé teszi a fejlesztők számára, hogy az átalakítási összetevőkre összpontosítsanak. Miután a PredictionIO motorszerverét webszolgáltatásként üzembe helyezték, valós időben tud válaszolni a dinamikus lekérdezésekre.

Az Apache PredictionIO különböző összetevőkből áll.

  • PredictionIO Platform : Nyílt forráskódú gépi tanulási verem, amely néhány olyan korszerű nyílt forráskódú alkalmazás tetejére épült, mint az Apache Spark, Apache Hadoop, Apache HBase és Elasticsearch.
  • Eseményszerver : Folyamatosan gyűjt adatokat a webszerverről vagy a mobilalkalmazás-szerverről valós idejű vagy kötegelt módban. Az összegyűjtött adatok felhasználhatók a motor betanítására vagy egységes nézet biztosítására az adatok elemzéséhez. Az eseménykiszolgáló az Apache HBase-t használja az adatok tárolására.
  • Engine Server : A motorszerver felelős a tényleges előrejelzés elkészítéséért. Beolvassa a betanítási adatokat az adattárból, és egy vagy több gépi tanulási algoritmust használ a prediktív modellek felépítéséhez. A webszolgáltatásként üzembe helyezett motor a REST API vagy SDK használatával válaszol a web- vagy mobilalkalmazások által tett lekérdezésekre.
  • Sablongaléria : Ez a galéria különféle típusú előre elkészített motorsablonokat kínál. Kiválaszthat egy sablont, amely hasonló az Ön használati esetéhez, és módosíthatja az igényei szerint.

Előfeltételek

Ebben az oktatóanyagban 192.0.2.1a szerver nyilvános IP-címeként fogjuk használni . Cserélje le az összes előfordulását 192.0.2.1a Vultr nyilvános IP-címére.

Frissítse alaprendszerét a CentOS 7 frissítése útmutató segítségével . A rendszer frissítése után folytassa a Java telepítésével.

Java telepítése

A PredictionIO számos összetevőjének működéséhez a JDK vagy Java Development Kit 8-as verziója szükséges. Támogatja az OpenJDK-t és az Oracle Java-t is. Ebben az oktatóanyagban az OpenJDK 8-as verzióját fogjuk telepíteni.

Az OpenJDK könnyen telepíthető, mivel a csomag az alapértelmezett YUM tárolóban érhető el.

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

Ellenőrizze a Java verzióját, hogy megbizonyosodjon arról, hogy megfelelően telepítette.

java -version

Hasonló kimenetet kapsz.

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

Mielőtt továbblépnénk, be kell állítanunk a JAVA_HOMEés a JRE_HOMEkörnyezeti változókat. Keresse meg a JAVA futtatható fájl abszolút elérési útját a rendszerben.

readlink -f $(which java)

Hasonló kimenetet fog látni.

[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

Most beállítjuk JAVA_HOMEés JRE_HOMEkörnyezeti változó szerint az utat a Java könyvtárat.

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

Futtassa a bash_profilefájlt.

source ~/.bash_profile

Most már futtathatja a echo $JAVA_HOMEparancsot, hogy ellenőrizze, hogy a környezeti változó be van-e állítva.

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

Telepítse a PredictionIO-t

Az Apache PredictionIO forrásfájlokat biztosít, amelyek letölthetők és helyben lefordíthatók. Hozzon létre egy új ideiglenes könyvtárat a forrásfájl letöltéséhez és fordításához.

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

Töltse le a PredictionIO forrásfájl archívumát bármely Apache Mirror webhelyről .

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

Bontsa ki az archívumot, és fordítsa le a forrást a PredictionIO disztribúciójának létrehozásához.

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

A fenti disztribúció a függőségek alapértelmezett verzióihoz fog épülni, amelyek a következők: Scala 2.11.8, Spark 2.1.1, Hadoop 2.7.3és ElasticSearch 5.5.2. Várja meg, amíg az összeállítás befejeződik, a rendszer teljesítményétől függően körülbelül tíz percet vesz igénybe.

Megjegyzés : Szabadon használhatja a függőségek legújabb támogatott verzióját, de előfordulhat, hogy figyelmeztetések jelennek meg az összeállítás során, mivel egyes funkciók elavultak lehetnek. Futtassa ./make-distribution.sh -Dscala.version=2.11.11 -Dspark.version=2.1.2 -Dhadoop.version=2.7.4 -Delasticsearch.version=5.5.3, cserélje le a verziószámot az Ön választása szerint.

Amint a felépítés sikeresen befejeződött, a következő üzenetet fogja látni a végén.

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

A PredictionIO bináris fájlok az PredictionIO-0.12.0-incubating.tar.gzarchívumba kerülnek. Bontsa ki az archívumot a /optkönyvtárban, és adja meg a tulajdonjogot az aktuális felhasználónak.

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

Állítsa be a PIO_HOMEkörnyezeti változót.

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

Telepítse a szükséges függőségeket

Hozzon létre egy új könyvtárat telepíteni PredictionIO függőségek, mint pl HBase, Sparkés Elasticsearch.

mkdir /opt/PredictionIO-0.12.0-incubating/vendors

Töltse le a Scala 2.11.8-as verzióját, és csomagolja ki a vendorskönyvtárba.

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

Töltse le az Apache Hadoop 2.7.3-as verzióját, és bontsa ki a vendorskönyvtárba.

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

Az Apache Spark a PredictionIO alapértelmezett feldolgozómotorja. Töltse le a Spark 2.1.1-es verzióját, és csomagolja ki a vendorskönyvtárba.

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

Töltse le az Elasticsearch 5.5.2-es verzióját, és csomagolja ki a vendorskönyvtárba.

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

Végül töltse le a HBase 1.2.6-os verzióját, és csomagolja ki a vendorskönyvtárba.

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

Nyissa meg a hbase-site.xmlkonfigurációs fájlt, hogy beállítsa a HBase-t, hogy önálló környezetben működjön.

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

Keresse meg az üres konfigurációs blokkot, és cserélje ki a következő konfigurációra.

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

Az adatkönyvtárat a HBase automatikusan létrehozza. Szerkessze a HBase környezetfájlt az JAVA_HOMEelérési út beállításához.

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

Törölje a 27-es sor megjegyzését, és állítsa JAVA_HOMEbe a jreJava telepítés elérési útját . A JAVA végrehajtható fájl elérési útját a readlink -f $(which java)paranccsal találhatja meg.

# 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

A 46-os és 47-es sorszámot is írja megjegyzésbe, mivel ezek nem szükségesek a JAVA 8-hoz.

# 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"

Konfigurálja a PredictionIO környezetet

A PredictionIO környezetfájl alapértelmezett konfigurációja pio-env.shfeltételezi, hogy PostgreSQL-t vagy MySQL-t használunk. Mivel a HBase-t és az Elasticsearch-et használtuk, szinte minden konfigurációt módosítanunk kell a fájlban. A legjobb, ha biztonsági másolatot készít a meglévő fájlról, és létrehoz egy új PredictionIO környezetfájlt.

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

Most, hogy létrehoztunk egy új alkalmazást, hozzáadunk néhány adatot. Éles környezetben szeretné automatikusan elküldeni az adatokat az eseménykiszolgálónak az eseménykiszolgáló API-nak az alkalmazásba való integrálásával. A PredictionIO működésének megismeréséhez néhány mintaadatot importálunk bele. A sablonmotor egy Python-szkriptet biztosít, amellyel könnyen importálhatók a mintaadatok az eseménykiszolgálóra.

Telepítse a Python pip-et.

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

Telepítse a PredictionIO Python SDK-t a pip használatával.

sudo pip install predictionio

Futtassa a Python-szkriptet, hogy hozzáadja a mintaadatokat az eseménykiszolgálóhoz.

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

Cserélje ki a hozzáférési kulcsot a tényleges hozzáférési kulcsra. Hasonló kimenetet fog látni.

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

A fenti szkript 10 felhasználót, 50 elemet 6 kategóriában, valamint néhány véletlenszerű vásárlási és megtekintési eseményt importál. Ha ellenőrizni szeretné, hogy az események importáltak-e vagy sem, futtassa a következő lekérdezést.

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

A kimenet megjeleníti az összes importált esemény listáját JSON formátumban.

Most nyissa meg a engine.jsonfájlt a szerkesztőben. Ez a fájl tartalmazza a motor konfigurációját.

nano engine.json

Keresse meg mindkét előfordulását, appNameés cserélje ki az értéket a korábban létrehozott alkalmazás tényleges nevére.

{
  "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
      }
    }
  ]
}

Építsd fel az alkalmazást.

pio build --verbose

Ha nem szeretné látni a naplóüzeneteket, törölje a --verboselehetőséget. A motorsablon elkészítése első alkalommal néhány percet vesz igénybe. Hasonló kimenetet fog látni, amikor a build sikeresen befejeződik.

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

Tanítsa meg a motort most. A betanítás során a motor elemzi az adatsort, és a megadott algoritmus szerint képezi magát.

pio train

Az alkalmazás üzembe helyezése előtt meg kell nyitnunk a portot 8000, hogy az alkalmazás állapota megtekinthető legyen a webes grafikus felületen. Ezenkívül az eseményszervert használó webhelyek és alkalmazások ezen a porton keresztül küldik és fogadják lekérdezéseiket.

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

Most már üzembe helyezheti a PredictionIO motort.

pio deploy

A fenti parancs a motort és a beépített webszervert a porton telepíti, 8000hogy válaszoljon az e-kereskedelmi webhelyekről és alkalmazásokról érkező lekérdezésekre. A motor sikeres üzembe helyezése után a következő kimenetet fogja látni a végén.

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

A motor állapotát http://192.0.2.1:8000bármely modern böngésző használatával ellenőrizheti. Győződjön meg róla, hogy cserélje 192.0.2.1ki a tényleges Vultr IP-címére.

Ez azt jelenti, hogy az e-kereskedelmi ajánlás motorsablonja telepítve van, és sikeresen fut. Lekérdezheti a motorsablont, hogy öt ajánlást kérjen le a felhasználó számára, u5ha futtatja a következő lekérdezést egy új terminálmunkamenetben.

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

Látni fogja a felhasználó számára generált ajánlásokat 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}]}

Becsomagolás

Gratulálunk, az Apache PredictionIO sikeresen telepítve van a szerveren. Mostantól az eseménykiszolgáló API-jával importálhatja az adatokat a motorba, és megjósolhatja a felhasználónak szóló javaslatokat. Ha szeretné, használhat más sablonokat is a sablongalériából. Feltétlenül nézze meg a Universal Recommender motorsablont, amely szinte minden felhasználási esetben használható, beleértve az e-kereskedelmet, híreket vagy videókat.


Leave a Comment

Telepítse a Plesket a CentOS 7 rendszeren

Telepítse a Plesket a CentOS 7 rendszeren

Más rendszert használ? A Plesk egy szabadalmaztatott webtárhely-vezérlőpult, amely lehetővé teszi a felhasználók számára, hogy adminisztrálják személyes és/vagy ügyfeleik webhelyeit, adatbázisait

A Squid Proxy telepítése a CentOS rendszeren

A Squid Proxy telepítése a CentOS rendszeren

A Squid egy népszerű, ingyenes Linux-program, amely lehetővé teszi továbbítási webproxy létrehozását. Ebben az útmutatóban megtudhatja, hogyan telepítheti a Squid-et a CentOS rendszerre, hogy megfordítsa

A Lighttpd (LLMP Stack) telepítése a CentOS 6 rendszeren

A Lighttpd (LLMP Stack) telepítése a CentOS 6 rendszeren

Bevezetés A Lighttpd az Apache forkja, amely sokkal kevésbé erőforrás-igényes. Könnyű, innen kapta a nevét, és meglehetősen egyszerű a használata. Telepítés

A statikus hálózat és az IPv6 konfigurálása CentOS 7 rendszeren

A statikus hálózat és az IPv6 konfigurálása CentOS 7 rendszeren

A VULTR a közelmúltban változtatásokat hajtott végre a saját oldalukon, és most már mindennek jól kell működnie, ha a NetworkManager engedélyezve van. Ha szeretné letiltani

Az Icinga2 módosítása a mester/kliens modell használatához CentOS 6 vagy CentOS 7 rendszeren

Az Icinga2 módosítása a mester/kliens modell használatához CentOS 6 vagy CentOS 7 rendszeren

Az Icinga2 egy hatékony felügyeleti rendszer, és mester-kliens modellben használva helyettesítheti az NRPE-alapú felügyeleti ellenőrzések szükségességét. A mester-kliens

Az Apache Cassandra 3.11.x telepítése CentOS 7 rendszeren

Az Apache Cassandra 3.11.x telepítése CentOS 7 rendszeren

Más rendszert használ? Az Apache Cassandra egy ingyenes és nyílt forráskódú NoSQL adatbázis-kezelő rendszer, amelyet úgy terveztek, hogy biztosítsa a méretezhetőséget,

A Microweber telepítése CentOS 7 rendszeren

A Microweber telepítése CentOS 7 rendszeren

Más rendszert használ? A Microweber egy nyílt forráskódú drag and drop CMS és online bolt. A Microweber forráskódja a GitHubon található. Ez az útmutató megmutatja neked

A Vanilla Forum telepítése a CentOS 7 rendszeren

A Vanilla Forum telepítése a CentOS 7 rendszeren

Más rendszert használ? A Vanilla forum egy nyílt forráskódú, PHP-ben írt fórumalkalmazás. Ez egy teljesen testreszabható, könnyen használható, és támogatja a külsőt

A Mattermost 4.1 telepítése CentOS 7 rendszeren

A Mattermost 4.1 telepítése CentOS 7 rendszeren

Más rendszert használ? A Mattermost egy nyílt forráskódú, saját üzemeltetésű alternatívája a Slack SAAS üzenetküldő szolgáltatásnak. Más szóval, a Mattermost segítségével kb

Minecraft szerverek hálózatának létrehozása BungeeCord segítségével Debian 8, Debian 9 vagy CentOS 7 rendszeren

Minecraft szerverek hálózatának létrehozása BungeeCord segítségével Debian 8, Debian 9 vagy CentOS 7 rendszeren

Mire lesz szüksége Egy Vultr VPS legalább 1 GB RAM-mal. SSH hozzáférés (root/adminisztrátori jogosultságokkal). 1. lépés: A BungeeCord telepítése Először is

Encrypt on Plesk

Encrypt on Plesk

A Plesk vezérlőpult nagyon szép integrációt kínál a Lets Encrypt számára. A Lets Encrypt egyike az egyetlen SSL-szolgáltatónak, amely teljes tanúsítványt ad ki

Lehetővé teszi a titkosítást a cPanel-en

Lehetővé teszi a titkosítást a cPanel-en

A Lets Encrypt egy tanúsító hatóság, amely ingyenes SSL-tanúsítványokat biztosít. A cPanel ügyes integrációt épített ki, így Ön és ügyfele

A Concrete5 telepítése CentOS 7 rendszeren

A Concrete5 telepítése CentOS 7 rendszeren

Más rendszert használ? A Concrete5 egy nyílt forráskódú CMS, amely számos megkülönböztető és hasznos funkciót kínál, hogy segítse a szerkesztőket a tartalom egyszerű létrehozásában.

Hogyan telepítsük az értékelő táblát a CentOS 7 rendszeren

Hogyan telepítsük az értékelő táblát a CentOS 7 rendszeren

Más rendszert használ? A Review Board egy ingyenes és nyílt forráskódú eszköz a forráskód, a dokumentáció, a képek és még sok más áttekintésére. Ez egy web alapú szoftver

Állítsa be a HTTP-hitelesítést az Nginx segítségével a CentOS 7 rendszeren

Állítsa be a HTTP-hitelesítést az Nginx segítségével a CentOS 7 rendszeren

Ebből az útmutatóból megtudhatja, hogyan állíthat be HTTP-hitelesítést egy CentOS 7 rendszeren futó Nginx webszerverhez. Követelmények A kezdéshez szüksége lesz a következőre:

A GoAccess telepítése a CentOS 7 rendszeren

A GoAccess telepítése a CentOS 7 rendszeren

Más rendszert használ? A GoAccess egy nyílt forráskódú webnapló-elemző. Használhatja naplók valós idejű elemzésére akár a terminálon, akár a

A YOURLS telepítése a CentOS 7 rendszeren

A YOURLS telepítése a CentOS 7 rendszeren

A YOURLS (Your Own URL Shortener) egy nyílt forráskódú URL-rövidítő és adatelemző alkalmazás. Ebben a cikkben a telepítés folyamatával foglalkozunk

Az ArangoDB telepítése és konfigurálása a CentOS 7 rendszeren

Az ArangoDB telepítése és konfigurálása a CentOS 7 rendszeren

Más rendszert használ? Bevezetés Az ArangoDB egy nyílt forráskódú NoSQL adatbázis, amely rugalmas adatmodellt kínál dokumentumokhoz, grafikonokhoz és kulcsértékekhez. Ez

Az Etckeeper használata az /etc verziókezeléshez

Az Etckeeper használata az /etc verziókezeléshez

Bevezetés Az /etc/ könyvtár kritikus szerepet játszik a Linux rendszer működésében. Ennek az az oka, hogy szinte minden rendszerkonfiguráció

Miért érdemes SSHFS-t használni? Távoli fájlrendszer csatlakoztatása SSHFS-sel a CentOS 6 rendszeren

Miért érdemes SSHFS-t használni? Távoli fájlrendszer csatlakoztatása SSHFS-sel a CentOS 6 rendszeren

Sok rendszergazda nagy mennyiségű kiszolgálót kezel. Ha a fájlokhoz különböző szervereken keresztül kell hozzáférni, mindegyikbe külön-külön kell bejelentkezni kb

Egyéni Windows ISO létrehozása frissítésekkel az NTLite használatával

Egyéni Windows ISO létrehozása frissítésekkel az NTLite használatával

Ez az oktatóanyag végigvezeti Önt a Vultrs rendszerekkel kompatibilis Windows ISO létrehozásának folyamatán. Itt megtanulhatja az <<strong>>Windows ISO<<strong>> előállításának lépéseit az NTLite segítségével.

A gépek felemelkedése: Az AI valós világbeli alkalmazásai

A gépek felemelkedése: Az AI valós világbeli alkalmazásai

A mesterséges intelligencia nem a jövőben, hanem itt a jelenben. Ebben a blogban Olvassa el, hogyan hatott a mesterséges intelligencia alkalmazások különböző ágazatokra.

DDOS támadások: Rövid áttekintés

DDOS támadások: Rövid áttekintés

Ön is DDOS támadások áldozata, és tanácstalan a megelőzési módszereket illetően? Olvassa el ezt a cikket a kérdések megoldásához.

Gondolkozott már azon, hogyan keresnek pénzt a hackerek?

Gondolkozott már azon, hogyan keresnek pénzt a hackerek?

Talán hallottál már arról, hogy a hackerek sok pénzt keresnek, de elgondolkodtál már azon, hogyan kereshetnek ennyi pénzt? beszéljük meg.

A Google forradalmi találmányai, amelyek megkönnyítik az életét.

A Google forradalmi találmányai, amelyek megkönnyítik az életét.

Szeretné látni a Google forradalmi találmányait, és azt, hogy ezek a találmányok hogyan változtatták meg minden mai ember életét? Ezután olvassa el a blogot, és nézze meg a Google találmányait.

Essential péntek: Mi történt az AI-vezérelt autókkal?

Essential péntek: Mi történt az AI-vezérelt autókkal?

Az önvezető autók koncepciója, hogy mesterséges intelligencia segítségével kerüljenek az utakra, már egy ideje álmunk. De számos ígéret ellenére sehol sem látszanak. Olvassa el ezt a blogot, hogy többet megtudjon…

Technológiai szingularitás: az emberi civilizáció távoli jövője?

Technológiai szingularitás: az emberi civilizáció távoli jövője?

Ahogy a tudomány gyors ütemben fejlődik, átveszi erőfeszítéseink nagy részét, megnő annak a kockázata is, hogy alávetjük magunkat egy megmagyarázhatatlan szingularitásnak. Olvassa el, mit jelenthet számunkra a szingularitás.

Az adattárolás fejlődése – Infografika

Az adattárolás fejlődése – Infografika

Az adatok tárolási módjai az Adatok születése óta alakulhatnak. Ez a blog egy infografika alapján mutatja be az adattárolás fejlődését.

A Big Data Reference Architecture Layerek funkciói

A Big Data Reference Architecture Layerek funkciói

Olvassa el a blogot, hogy a legegyszerűbb módon ismerje meg a Big Data Architecture különböző rétegeit és azok funkcióit.

Az okosotthoni eszközök 6 lenyűgöző előnye az életünkben

Az okosotthoni eszközök 6 lenyűgöző előnye az életünkben

Ebben a digitálisan vezérelt világban az intelligens otthoni eszközök az élet döntő részévé váltak. Íme az intelligens otthoni eszközök néhány elképesztő előnye, hogyan teszik életünket érdemessé és egyszerűbbé.