Hur man installerar och använder Apache PredictionIO för maskininlärning på CentOS 7

Traditionella metoder för dataanalys är omöjliga att använda när datamängder når en viss storlek. Ett modernt alternativ till att analysera de enorma uppsättningarna data är att använda maskininlärningsmetoder. Maskininlärning kan ge exakta resultat när du använder en snabb och effektiv algoritm.

Apache PredictionIO är en maskininlärningsserver med öppen källkod som används för att skapa prediktiva motorer för alla maskininlärningsuppgifter. Det förkortar tiden för maskininlärning från labb till produktion genom att använda anpassningsbara motormallar som kan byggas och distribueras snabbt. Det tillhandahåller datainsamlings- och serverkomponenter och sammanfattar underliggande teknologi för att exponera ett API som gör det möjligt för utvecklare att fokusera på transformationskomponenter. När motorservern för PredictionIO väl har distribuerats som en webbtjänst kan den svara på dynamiska frågor i realtid.

Apache PredictionIO består av olika komponenter.

  • PredictionIO Platform : En maskininlärningsstack med öppen källkod byggd på toppen av några toppmoderna applikationer med öppen källkod som Apache Spark, Apache Hadoop, Apache HBase och Elasticsearch.
  • Event Server : Denna samlar kontinuerligt in data från din webbserver eller mobilapplikationsserver i realtidsläge eller batchläge. Den insamlade informationen kan användas för att träna motorn eller för att ge en enhetlig vy för dataanalys. Händelseservern använder Apache HBase för att lagra data.
  • Motorserver : Motorservern ansvarar för att göra den faktiska förutsägelsen. Den läser träningsdata från datalagret och använder en eller flera maskininlärningsalgoritmer för att bygga prediktiva modeller. En motor, när den väl har implementerats som en webbtjänst, svarar på frågorna från en webb- eller mobilapp med hjälp av REST API eller SDK.
  • Mallgalleri : Detta galleri erbjuder olika typer av förbyggda motormallar. Du kan välja en mall som liknar ditt användningsfall och ändra den enligt dina krav.

Förutsättningar

  • En Vultr CentOS 7-serverinstans med minst 8 GB RAM. För test- och utvecklingsändamål kan du välja en instans med 4GB RAM och ytterligare 4GB växlingsminne .
  • En sudo-användare .

I den här handledningen kommer vi att använda 192.0.2.1som serverns offentliga IP-adress. Ersätt alla förekomster av 192.0.2.1med din Vultr offentliga IP-adress.

Uppdatera ditt bassystem med hjälp av guiden Hur man uppdaterar CentOS 7 . När ditt system har uppdaterats, fortsätt att installera Java.

Installera Java

Många av komponenterna i PredictionIO kräver JDK, eller Java Development Kit, version 8 för att fungera. Den stöder både OpenJDK och Oracle Java. I den här handledningen kommer vi att installera OpenJDK version 8.

OpenJDK kan enkelt installeras, eftersom paketet är tillgängligt i standard YUM-förvaret.

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

Verifiera Javas version för att säkerställa att den installerades korrekt.

java -version

Du kommer att få en liknande utgång.

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

Innan vi kan gå vidare måste vi ställa in variablerna JAVA_HOMEoch JRE_HOMEmiljö. Hitta den absoluta sökvägen för den körbara JAVA-filen i ditt system.

readlink -f $(which java)

Du kommer att se en liknande utgång.

[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

Ställ nu in JAVA_HOMEoch JRE_HOMEmiljövariabel enligt sökvägen till Java-katalogen.

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

Kör bash_profilefilen.

source ~/.bash_profile

Nu kan du köra echo $JAVA_HOMEkommandot för att kontrollera om miljövariabeln är inställd.

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

Installera PredictionIO

Apache tillhandahåller PredictionIO-källfiler som kan laddas ner och kompileras lokalt. Skapa en ny tillfällig katalog för att ladda ner och kompilera källfilen.

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

Ladda ner PredictionIO-källfilarkivet med hjälp av valfri Apache Mirror-webbplats .

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

Extrahera arkivet och kompilera källan för att skapa en distribution av PredictionIO.

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

Ovanstående distribution kommer att byggas mot standardversionerna av beroenden, som är Scala 2.11.8, Spark 2.1.1, Hadoop 2.7.3och ElasticSearch 5.5.2. Vänta tills bygget är klart, det tar cirka tio minuter att slutföra beroende på ditt systems prestanda.

Obs : Du är fri att använda den senaste versionen av beroenden som stöds, men du kan se några varningar under konstruktionen eftersom vissa funktioner kan vara utfasade. Kör ./make-distribution.sh -Dscala.version=2.11.11 -Dspark.version=2.1.2 -Dhadoop.version=2.7.4 -Delasticsearch.version=5.5.3, ersätt versionsnumret enligt ditt val.

När bygget har slutförts kommer du att se följande meddelande i slutet.

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

De binära filerna för PredictionIO kommer att sparas i PredictionIO-0.12.0-incubating.tar.gzarkivet. Extrahera arkivet i /optkatalogen och ge äganderätten till den aktuella användaren.

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

Ställ in PIO_HOMEmiljövariabeln.

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

Installera nödvändiga beroenden

Skapa en ny katalog för att installera PredictionIO-beroenden som HBase, Sparkoch Elasticsearch.

mkdir /opt/PredictionIO-0.12.0-incubating/vendors

Ladda ner Scala version 2.11.8 och extrahera den i vendorskatalogen.

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

Ladda ner Apache Hadoop version 2.7.3 och extrahera den i vendorskatalogen.

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 är standardbearbetningsmotorn för PredictionIO. Ladda ner Spark version 2.1.1 och extrahera den i vendorskatalogen.

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

Ladda ner Elasticsearch version 5.5.2 och extrahera den i vendorskatalogen.

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

Slutligen, ladda ner HBase version 1.2.6 och extrahera den i vendorskatalogen.

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

Öppna hbase-site.xmlkonfigurationsfilen för att konfigurera HBase att fungera i en fristående miljö.

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

Hitta det tomma konfigurationsblocket och ersätt det med följande konfiguration.

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

Datakatalogen skapas automatiskt av HBase. Redigera HBase-miljöfilen för att ange JAVA_HOMEsökvägen.

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

Avkommentera rad nummer 27 och ställ JAVA_HOMEin sökvägen till jredin Java-installation. Du kan hitta sökvägen till den körbara JAVA-filen med readlink -f $(which java)kommandot.

# 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

Kommentera också radnummer 46 och 47 eftersom de inte krävs för 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"

Konfigurera PredictionIO-miljön

Standardkonfigurationen i PredictionIO-miljöfilen pio-env.shförutsätter att vi använder PostgreSQL eller MySQL. Eftersom vi har använt HBase och Elasticsearch kommer vi att behöva modifiera nästan varje konfiguration i filen. Det är bäst att ta en säkerhetskopia av den befintliga filen och skapa en ny PredictionIO-miljöfil.

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

Skapa nu en ny fil för PredictionIO-miljökonfiguration.

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

Fyll filen med följande konfiguration.

# 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

Spara filen och avsluta redigeraren.

Öppna Elasticsearch-konfigurationsfilen.

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

Avkommentera raden och ställ in klusternamnet till exakt samma som det som finns i PredictionIO-miljöfilen. Klusternamnet är satt till pioi ovanstående konfiguration.

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

Lägg nu till $PIO_HOME/binkatalogen i PATH-variabeln så att PredictionIO körbara filer exekveras direkt.

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

Vid denna tidpunkt är PredictionIO framgångsrikt installerad på din server.

Startar PredictionIO

Du kan starta alla tjänster i PredictionIO som Elasticsearch, HBase och Event server med ett enda kommando.

pio-start-all

Du kommer att se följande utdata.

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

Använd följande kommando för att kontrollera statusen för PredictionIO-servern.

pio status

Du kommer att se följande utdata.

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

I den här handledningen kommer vi att implementera E-Commerce Recommendationmotormallen för att demonstrera funktionaliteten hos PredictionIO-servern med hjälp av några exempeldata. Denna motormall ger några personliga rekommendationer till en användare på en e-handelswebbplats. Som standard har den funktioner som att utesluta slut i lager eller ge rekommendationer till en användare som registrerar sig efter att modellen har tränats. Som standard tar motormallen också en användares vy och köphändelser, objekt med kategorier och egenskaper och lista över otillgängliga objekt. När motorn har tränats och distribuerats kan du skicka en förfrågan med användar-id och antal objekt som ska rekommenderas. Den genererade utdatan kommer att vara en rankad lista med rekommenderade artikel-ID.

Installera Git, eftersom det kommer att användas för att klona förvaret.

cd ~    
sudo yum -y install git

Klona E-Commerce Recommender-motormallen på ditt system.

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

Skapa en ny applikation för mallmotorn för e-handelsrekommendationer. Varje applikation i PredictionIO används för att lagra data för en separat webbplats. Om du har flera webbplatser kan du skapa flera appar för att lagra varje webbplatss data i en annan applikation. Du är fri att välja vilket namn som helst för din ansökan.

cd MyEComRecomm/
pio app new myecom

Du kommer att se följande utdata.

[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

Utdata ovan innehåller också åtkomstnyckeln som kommer att användas för att autentisera när indata skickas till händelseservern.

Du kan alltid hitta åtkomstnyckeln tillsammans med listan över tillgängliga applikationer genom att köra.

pio app list

Du kommer att se följande utdata som innehåller en lista över applikationer och åtkomstnyckeln.

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

Nu när vi har skapat en ny applikation kommer vi att lägga till lite data till den. I produktionsmiljön vill du automatiskt skicka data till händelseservern genom att integrera händelseserverns API i applikationen. För att lära oss hur PredictionIO fungerar kommer vi att importera några exempeldata till den. Mallmotorn tillhandahåller ett Python-skript som enkelt kan användas för att importera exempeldata till händelseservern.

Installera Python pip.

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

Installera PredictionIO Python SDK med pip.

sudo pip install predictionio

Kör Python-skriptet för att lägga till exempeldata till händelseservern.

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

Se till att ersätta åtkomstnyckeln med din faktiska åtkomstnyckel. Du kommer att se en liknande utgång.

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

Ovanstående skript importerar 10 användare, 50 artiklar i 6 kategorier och några slumpmässiga händelser med köp och visningar. För att kontrollera om händelserna är importerade eller inte kan du köra följande fråga.

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

Utdata kommer att visa dig listan över alla importerade händelser i JSON-format.

Öppna nu engine.jsonfilen i editorn. Den här filen innehåller konfigurationen av motorn.

nano engine.json

Hitta både förekomsterna av appNameoch ersätt värdet med det faktiska namnet på appen du har skapat tidigare.

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

Bygg applikationen.

pio build --verbose

Om du inte vill se loggmeddelandena, ta bort --verbosealternativet. Att bygga motormallen för första gången tar några minuter. Du kommer att se en liknande utdata när konstruktionen är klar.

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

Träna motorn nu. Under utbildningen analyserar motorn datamängden och tränar sig själv enligt den tillhandahållna algoritmen.

pio train

Innan vi distribuerar applikationen måste vi öppna porten 8000så att applikationens status kan ses på webbgränssnittet. Webbplatserna och applikationerna som använder händelseservern kommer också att skicka och ta emot sina frågor via denna port.

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

Nu kan du distribuera PredictionIO-motorn.

pio deploy

Ovanstående kommando kommer att distribuera motorn och den inbyggda webbservern på porten för 8000att svara på frågorna från e-handelswebbplatserna och applikationerna. Du kommer att se följande utdata i slutet när motorn har installerats.

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

Du kan verifiera motorns status genom att http://192.0.2.1:8000använda vilken modern webbläsare som helst. Se till att du ersätter 192.0.2.1med din faktiska Vultr IP-adress.

Detta betyder att motormallen för e-handelsrekommendation har distribuerats och körs framgångsrikt. Du kan fråga motormallen för att hämta fem rekommendationer för användare u5genom att köra följande fråga i en ny terminalsession.

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

Du kommer att se de genererade rekommendationerna för användaren 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}]}

Avslutar

Grattis, Apache PredictionIO har implementerats framgångsrikt på din server. Du kan nu använda händelseserverns API för att importera data till motorn för att förutsäga rekommendationerna för användaren. Om du vill kan du använda några andra mallar från mallgalleriet. Var noga med att kolla in motormallen Universal Recommender som kan användas i nästan alla användningsfall inklusive e-handel, nyheter eller video.


Installera Plesk på CentOS 7

Installera Plesk på CentOS 7

Använder du ett annat system? Plesk är en egen kontrollpanel för webbhotell som tillåter användare att administrera sina personliga och/eller klienters webbplatser, databaser

Hur man installerar Squid Proxy på CentOS

Hur man installerar Squid Proxy på CentOS

Squid är ett populärt, gratis Linux-program som låter dig skapa en webbproxy för vidarebefordran. I den här guiden ser du hur du installerar Squid på CentOS för att förvandla dig

Hur man installerar Lighttpd (LLMP Stack) på CentOS 6

Hur man installerar Lighttpd (LLMP Stack) på CentOS 6

Inledning Lighttpd är en apachegaffel som syftar till att vara mycket mindre resurskrävande. Den är lätt, därav namnet, och är ganska enkel att använda. Installera

Konfigurera statiskt nätverk och IPv6 på CentOS 7

Konfigurera statiskt nätverk och IPv6 på CentOS 7

VULTR har nyligen gjort ändringar på deras sida, och allt borde nu fungera bra direkt när NetworkManager är aktiverat. Om du vill inaktivera

Ändra Icinga2 för att använda Master/Client Model på CentOS 6 eller CentOS 7

Ändra Icinga2 för att använda Master/Client Model på CentOS 6 eller CentOS 7

Icinga2 är ett kraftfullt övervakningssystem, och när det används i en master-klient-modell kan det ersätta behovet av NRPE-baserade övervakningskontroller. Master-klienten

Hur man installerar Apache Cassandra 3.11.x på CentOS 7

Hur man installerar Apache Cassandra 3.11.x på CentOS 7

Använder du ett annat system? Apache Cassandra är ett gratis NoSQL-databashanteringssystem med öppen källkod som är designat för att ge skalbarhet, hög

Hur man installerar Microweber på CentOS 7

Hur man installerar Microweber på CentOS 7

Använder du ett annat system? Microweber är en öppen källkod för dra och släpp CMS och onlinebutik. Microweber källkod finns på GitHub. Denna guide kommer att visa dig

Hur man installerar Vanilla Forum på CentOS 7

Hur man installerar Vanilla Forum på CentOS 7

Använder du ett annat system? Vanilla forum är en open source forumapplikation skriven i PHP. Det är en helt anpassningsbar, enkel att använda och stöder externa

Hur man installerar Mattermost 4.1 på CentOS 7

Hur man installerar Mattermost 4.1 på CentOS 7

Använder du ett annat system? Mattermost är ett alternativ med öppen källkod, självvärd till meddelandetjänsten Slack SAAS. Med andra ord, med Mattermost, du ca

Skapa ett nätverk av Minecraft-servrar med BungeeCord på Debian 8, Debian 9 eller CentOS 7

Skapa ett nätverk av Minecraft-servrar med BungeeCord på Debian 8, Debian 9 eller CentOS 7

Vad du behöver En Vultr VPS med minst 1 GB RAM. SSH-åtkomst (med root-/administrativa privilegier). Steg 1: Installera BungeeCord Först till kvarn

Låt oss kryptera på Plesk

Låt oss kryptera på Plesk

Plesks kontrollpanel har en mycket trevlig integration för Lets Encrypt. Lets Encrypt är en av de enda SSL-leverantörerna som ger ut certifikat fullständigt

Låter kryptera på cPanel

Låter kryptera på cPanel

Lets Encrypt är en certifikatmyndighet dedikerad till att tillhandahålla SSL-certifikat gratis. cPanel har byggt en snygg integration så att du och din klient

Hur man installerar Concrete5 på CentOS 7

Hur man installerar Concrete5 på CentOS 7

Använder du ett annat system? Concrete5 är ett CMS med öppen källkod som erbjuder många distinkta och användbara funktioner för att hjälpa redaktörer att producera innehåll enkelt och

Hur man installerar Review Board på CentOS 7

Hur man installerar Review Board på CentOS 7

Använder du ett annat system? Review Board är ett gratis och öppen källkodsverktyg för att granska källkod, dokumentation, bilder och många fler. Det är webbaserad mjukvara

Ställ in HTTP-autentisering med Nginx på CentOS 7

Ställ in HTTP-autentisering med Nginx på CentOS 7

I den här guiden lär du dig hur du ställer in HTTP-autentisering för en Nginx-webbserver som körs på CentOS 7. Krav För att komma igång behöver du

Hur man installerar YOURLS på CentOS 7

Hur man installerar YOURLS på CentOS 7

YOURLS (Your Own URL Shortener) är ett webbadressförkortnings- och dataanalysprogram med öppen källkod. I den här artikeln kommer vi att täcka installationsprocessen

Hur man installerar och konfigurerar ArangoDB på CentOS 7

Hur man installerar och konfigurerar ArangoDB på CentOS 7

Använder du ett annat system? Inledning ArangoDB är en NoSQL-databas med öppen källkod med en flexibel datamodell för dokument, grafer och nyckel-värden. Det är

Använda Etckeeper för versionskontroll av /etc

Använda Etckeeper för versionskontroll av /etc

Inledning Katalogen /etc/ spelar en avgörande roll för hur ett Linux-system fungerar. Anledningen till detta är att nästan varje systemkonfiguration

Varför ska du använda SSHFS? Hur man monterar ett fjärrfilsystem med SSHFS på CentOS 6

Varför ska du använda SSHFS? Hur man monterar ett fjärrfilsystem med SSHFS på CentOS 6

Många systemadministratörer hanterar stora mängder servrar. När filer behöver nås över olika servrar, logga in på var och en individuellt ca

Konfigurera en Half Life 2-server på CentOS 6

Konfigurera en Half Life 2-server på CentOS 6

Denna handledning kommer att täcka processen att installera en Half Life 2-spelserver på CentOS 6 System. Steg 1: Installera förutsättningarna För att ställa in ou

The Rise of Machines: Real World Applications of AI

The Rise of Machines: Real World Applications of AI

Artificiell intelligens är inte i framtiden, det är här i nuet I den här bloggen Läs hur Artificiell intelligens-applikationer har påverkat olika sektorer.

DDOS-attacker: En kort översikt

DDOS-attacker: En kort översikt

Är du också ett offer för DDOS-attacker och förvirrad över de förebyggande metoderna? Läs den här artikeln för att lösa dina frågor.

Har du någonsin undrat hur hackare tjänar pengar?

Har du någonsin undrat hur hackare tjänar pengar?

Du kanske har hört att hackare tjänar mycket pengar, men har du någonsin undrat hur de tjänar den typen av pengar? låt oss diskutera.

Revolutionerande uppfinningar från Google som gör ditt liv lätt.

Revolutionerande uppfinningar från Google som gör ditt liv lätt.

Vill du se revolutionerande uppfinningar av Google och hur dessa uppfinningar förändrade livet för varje människa idag? Läs sedan till bloggen för att se uppfinningar av Google.

Fredag ​​Essential: Vad hände med AI-drivna bilar?

Fredag ​​Essential: Vad hände med AI-drivna bilar?

Konceptet med att självkörande bilar ska ut på vägarna med hjälp av artificiell intelligens är en dröm vi har ett tag nu. Men trots flera löften finns de ingenstans att se. Läs den här bloggen för att lära dig mer...

Technological Singularity: A Distant Future of Human Civilization?

Technological Singularity: A Distant Future of Human Civilization?

När vetenskapen utvecklas i snabb takt och tar över en hel del av våra ansträngningar, ökar också riskerna för att utsätta oss för en oförklarlig singularitet. Läs, vad singularitet kan betyda för oss.

Utveckling av datalagring – Infographic

Utveckling av datalagring – Infographic

Lagringsmetoderna för data har utvecklats kan vara sedan födelsen av data. Den här bloggen tar upp utvecklingen av datalagring på basis av en infografik.

Funktioner för Big Data Reference Architecture Layers

Funktioner för Big Data Reference Architecture Layers

Läs bloggen för att känna till olika lager i Big Data Architecture och deras funktionaliteter på enklaste sätt.

6 fantastiska fördelar med att ha smarta hemenheter i våra liv

6 fantastiska fördelar med att ha smarta hemenheter i våra liv

I denna digitala värld har smarta hemenheter blivit en avgörande del av livet. Här är några fantastiska fördelar med smarta hemenheter om hur de gör vårt liv värt att leva och enklare.

macOS Catalina 10.15.4 tilläggsuppdatering orsakar fler problem än att lösa

macOS Catalina 10.15.4 tilläggsuppdatering orsakar fler problem än att lösa

Nyligen släppte Apple macOS Catalina 10.15.4, en tilläggsuppdatering för att åtgärda problem, men det verkar som om uppdateringen orsakar fler problem som leder till att mac-datorer blir murade. Läs den här artikeln för att lära dig mer