Apache PredictionIO installeren en gebruiken voor machine learning op CentOS 7

Traditionele benaderingen van data-analyse zijn onmogelijk te gebruiken wanneer datasets een bepaalde grootte bereiken. Een modern alternatief voor het analyseren van de enorme hoeveelheden gegevens is het gebruik van machine learning-methoden. Machine learning kan nauwkeurige resultaten opleveren bij gebruik van een snel en efficiënt algoritme.

Apache PredictionIO is een open source machine learning-server die wordt gebruikt om voorspellende engines te maken voor elke machine learning-taak. Het verkort de tijd van machine learning-toepassingen van laboratorium tot productie door gebruik te maken van aanpasbare motorsjablonen die snel kunnen worden gebouwd en geïmplementeerd. Het biedt de componenten voor gegevensverzameling en -bediening en abstraheert onderliggende technologie om een ​​API bloot te leggen waarmee ontwikkelaars zich kunnen concentreren op transformatiecomponenten. Zodra de motorserver van PredictionIO is geïmplementeerd als een webservice, kan deze in realtime reageren op dynamische vragen.

Apache PredictionIO bestaat uit verschillende componenten.

  • PredictionIO-platform : een open source machine learning-stack die is gebouwd op de top van een state-of-the-art open source-applicatie zoals Apache Spark, Apache Hadoop, Apache HBase en Elasticsearch.
  • Gebeurtenisserver : dit verzamelt continu gegevens van uw webserver of mobiele toepassingsserver in realtime modus of batchmodus. De verzamelde gegevens kunnen worden gebruikt om de motor te trainen of om een ​​uniforme weergave te bieden voor gegevensanalyse. De gebeurtenisserver gebruikt Apache HBase om de gegevens op te slaan.
  • Engine Server : De engine-server is verantwoordelijk voor het maken van de daadwerkelijke voorspelling. Het leest de trainingsgegevens uit het gegevensarchief en gebruikt een of meer machine learning-algoritmen voor het bouwen van de voorspellende modellen. Een engine, eenmaal geïmplementeerd als een webservice, reageert op de vragen van een web- of mobiele app met behulp van REST API of SDK.
  • Sjabloongalerij : deze galerij biedt verschillende soorten vooraf gebouwde motorsjablonen. U kunt een sjabloon kiezen die vergelijkbaar is met uw use-case en deze aanpassen aan uw vereisten.

Vereisten

  • Een Vultr CentOS 7-serverinstantie met minimaal 8 GB RAM. Voor test- en ontwikkelingsdoeleinden kunt u een exemplaar kiezen met 4 GB RAM en nog eens 4 GB wisselgeheugen .
  • Een sudo-gebruiker .

In deze zelfstudie gebruiken we 192.0.2.1het openbare IP-adres van de server. Vervang alle exemplaren van 192.0.2.1door uw Vultr openbare IP-adres.

Update uw basissysteem met behulp van de handleiding CentOS 7 updaten . Zodra uw systeem is bijgewerkt, gaat u verder met de installatie van Java.

Installeer Java

Veel van de componenten van PredictionIO hebben JDK of Java Development Kit, versie 8 nodig om te werken. Het ondersteunt zowel OpenJDK als Oracle Java. In deze tutorial installeren we OpenJDK versie 8.

OpenJDK kan eenvoudig worden geïnstalleerd, omdat het pakket beschikbaar is in de standaard YUM-repository.

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

Controleer de Java-versie om er zeker van te zijn dat deze correct is geïnstalleerd.

java -version

Je krijgt een vergelijkbare output.

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

Voordat we verder kunnen gaan, moeten we de JAVA_HOMEen JRE_HOMEomgevingsvariabelen instellen. Vind het absolute pad van het JAVA-uitvoerbare bestand in uw systeem.

readlink -f $(which java)

U zult een vergelijkbare uitvoer zien.

[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

Stel nu JAVA_HOMEen JRE_HOMEomgevingsvariabele in volgens het pad van de Java-directory.

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

Voer het bash_profilebestand uit.

source ~/.bash_profile

Nu kunt u de echo $JAVA_HOMEopdracht uitvoeren om te controleren of de omgevingsvariabele is ingesteld.

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

Installeer PredictionIO

Apache biedt PredictionIO-bronbestanden die lokaal kunnen worden gedownload en gecompileerd. Maak een nieuwe tijdelijke map om het bronbestand te downloaden en te compileren.

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

Download het PredictionIO-bronbestandarchief met elke Apache Mirror-site .

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

Pak het archief uit en compileer de bron om een ​​distributie van PredictionIO te maken.

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

Bovenstaande verdeling zal worden gebouwd tegen de standaardversies van de afhankelijkheden, die zijn Scala 2.11.8, Spark 2.1.1, Hadoop 2.7.3en ElasticSearch 5.5.2. Wacht tot het bouwen is voltooid, het duurt ongeveer tien minuten om te voltooien, afhankelijk van de prestaties van je systeem.

Opmerking : u bent vrij om de nieuwste ondersteunde versie van de afhankelijkheden te gebruiken, maar tijdens het bouwen ziet u mogelijk enkele waarschuwingen omdat sommige functies mogelijk worden afgeschaft. Rennen ./make-distribution.sh -Dscala.version=2.11.11 -Dspark.version=2.1.2 -Dhadoop.version=2.7.4 -Delasticsearch.version=5.5.3, vervang het versienummer volgens uw keuze.

Zodra de build is voltooid, ziet u aan het einde het volgende bericht.

...
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 PredictionIO binaire bestanden worden opgeslagen in het PredictionIO-0.12.0-incubating.tar.gzarchief. Pak het archief uit in de /optdirectory en geef het eigendom aan de huidige gebruiker.

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

Stel de PIO_HOMEomgevingsvariabele in.

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

Installeer vereiste afhankelijkheden

Maak een nieuwe map om PredictionIO-afhankelijkheden zoals HBase, Sparken te installeren Elasticsearch.

mkdir /opt/PredictionIO-0.12.0-incubating/vendors

Download Scala versie 2.11.8 en pak het uit in de vendorsdirectory.

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

Download Apache Hadoop versie 2.7.3 en pak het uit in de vendorsmap.

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 is de standaard verwerkingsengine voor PredictionIO. Download Spark versie 2.1.1 en pak het uit in de vendorsdirectory.

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

Download Elasticsearch versie 5.5.2 en pak het uit in de vendorsdirectory.

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

Download ten slotte HBase-versie 1.2.6 en pak het uit in de vendorsmap.

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

Open het hbase-site.xmlconfiguratiebestand om HBase te configureren om in een zelfstandige omgeving te werken.

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

Zoek het lege configuratieblok en vervang het door de volgende configuratie.

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

De datamap wordt automatisch aangemaakt door HBase. Bewerk het HBase-omgevingsbestand om het JAVA_HOMEpad in te stellen.

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

Maak een opmerking bij regelnummer 27 en stel JAVA_HOMEhet pad in van jreuw Java-installatie. Je kunt het pad naar het JAVA-uitvoerbare bestand vinden met behulp van de readlink -f $(which java)opdracht.

# 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

Geef ook commentaar op regelnummers 46 en 47 omdat ze niet vereist zijn voor 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"

Configureer de PredictionIO-omgeving

De standaardconfiguratie in het PredictionIO-omgevingsbestand pio-env.shgaat ervan uit dat we PostgreSQL of MySQL gebruiken. Omdat we HBase en Elasticsearch hebben gebruikt, moeten we bijna elke configuratie in het bestand wijzigen. Het is het beste om een ​​back-up te maken van het bestaande bestand en een nieuw PredictionIO-omgevingsbestand te maken.

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

Maak nu een nieuw bestand aan voor de configuratie van de PredictionIO-omgeving.

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

Vul het bestand in met de volgende configuratie.

# 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

Sla het bestand op en verlaat de editor.

Open het Elasticsearch-configuratiebestand.

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

Maak een commentaar op de regel en stel de clusternaam in op exact dezelfde als die in het PredictionIO-omgevingsbestand. De clusternaam is ingesteld op pioin de bovenstaande configuratie.

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

Voeg nu de $PIO_HOME/bindirectory toe aan de PATH-variabele zodat de PredictionIO-executables direct worden uitgevoerd.

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

Op dit moment is PredictionIO met succes op uw server geïnstalleerd.

PredictionIO starten

U kunt alle services in PredictionIO starten, zoals Elasticsearch, HBase en Event-server met één enkele opdracht.

pio-start-all

Je ziet de volgende 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...

Gebruik de volgende opdracht om de status van de PredictionIO-server te controleren.

pio status

Je ziet de volgende 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.

Zoals we in de bovenstaande berichten kunnen zien, is ons systeem klaar voor gebruik voor het implementeren van een motorsjabloon en het voorspellen van gegevens.

Een motorsjabloon implementeren

Er zijn verschillende kant-en-klare engine-sjablonen beschikbaar in de PredictionIO-sjabloongalerij die eenvoudig op de PredictionIO-server kan worden geïnstalleerd. U bent vrij om door de lijst met motorsjablonen te bladeren om degene te vinden die dicht bij uw vereisten ligt, of u kunt uw eigen engine schrijven.

In deze tutorial zullen we de motorsjabloon implementeren E-Commerce Recommendationom de functionaliteit van de PredictionIO-server te demonstreren met behulp van enkele voorbeeldgegevens. Deze motorsjabloon geeft een persoonlijke aanbeveling aan een gebruiker op een e-commerce website. Standaard heeft het functies zoals het uitsluiten van artikelen die niet op voorraad zijn of het geven van aanbevelingen aan een gebruiker die zich aanmeldt nadat het model is getraind. Ook neemt de motorsjabloon standaard de weergave van een gebruiker op en koopt hij evenementen, items met categorieën en eigenschappen en een lijst met niet-beschikbare items. Zodra de engine is getraind en geïmplementeerd, kunt u een query verzenden met de gebruikers-ID en het aantal aan te bevelen items. De gegenereerde output is een gerangschikte lijst met aanbevolen item-ID's.

Installeer Git, omdat het zal worden gebruikt om de repository te klonen.

cd ~    
sudo yum -y install git

Kloon de E-Commerce Recommender engine-sjabloon op uw systeem.

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

Maak een nieuwe applicatie voor de engine voor aanbevelingen voor e-commerce-aanbevelingen. Elke applicatie in PredictionIO wordt gebruikt om de gegevens op te slaan voor een aparte website. Als u meerdere websites heeft, kunt u meerdere apps maken om de gegevens van elke website op te slaan in een andere applicatie. U kunt elke naam voor uw toepassing kiezen.

cd MyEComRecomm/
pio app new myecom

Je ziet de volgende 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

De uitvoer hierboven bevat ook de toegangssleutel die zal worden gebruikt om te verifiëren bij het verzenden van de invoergegevens naar de gebeurtenisserver.

U kunt de toegangssleutel en de lijst met beschikbare applicaties altijd vinden door te draaien.

pio app list

U ziet de volgende uitvoer met een lijst met applicaties en de toegangssleutel.

[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 we een nieuwe applicatie hebben gemaakt, zullen we er wat gegevens aan toevoegen. In de productieomgeving zou u de gegevens automatisch naar de gebeurtenisserver willen sturen door de API van de gebeurtenisserver in de applicatie te integreren. Om te leren hoe PredictionIO werkt, zullen we er enkele voorbeeldgegevens in importeren. De sjabloonengine biedt een Python-script dat gemakkelijk kan worden gebruikt om de voorbeeldgegevens in de gebeurtenisserver te importeren.

Installeer Python pip.

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

Installeer PredictionIO Python SDK met pip.

sudo pip install predictionio

Voer het Python-script uit om de voorbeeldgegevens toe te voegen aan de gebeurtenisserver.

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

Zorg ervoor dat u de toegangssleutel vervangt door uw daadwerkelijke toegangssleutel. U zult een vergelijkbare uitvoer zien.

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

Het bovenstaande script importeert 10 gebruikers, 50 items in 6 categorieën en enkele willekeurige aankoop- en weergavegebeurtenissen. Om te controleren of de gebeurtenissen al dan niet zijn geïmporteerd, kunt u de volgende query uitvoeren.

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

De uitvoer toont u de lijst met alle geïmporteerde gebeurtenissen in JSON-indeling.

Open nu het engine.jsonbestand in de editor. Dit bestand bevat de configuratie van de engine.

nano engine.json

Zoek zowel het voorkomen van appNameals de waarde vervangen door de werkelijke naam van de app die u eerder hebt gemaakt.

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

Bouw de applicatie.

pio build --verbose

Verwijder de --verboseoptie als u de logboekberichten niet wilt zien . Het bouwen van de motorsjabloon duurt een paar minuten. U zult een vergelijkbare uitvoer zien wanneer de build met succes is voltooid.

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

Train nu de motor. Tijdens de training analyseert de engine de dataset en traint zichzelf volgens het verstrekte algoritme.

pio train

Voordat we de applicatie implementeren, moeten we de poort openen 8000zodat de status van de applicatie kan worden bekeken op de web-GUI. Ook zullen de websites en applicaties die de gebeurtenisserver gebruiken hun vragen via deze poort verzenden en ontvangen.

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

Nu kunt u de PredictionIO-engine gebruiken.

pio deploy

De bovenstaande opdracht zal de engine en de ingebouwde webserver op de poort inzetten 8000om te reageren op de vragen van de e-commerce websites en applicaties. Aan het einde ziet u de volgende uitvoer zodra de engine met succes is geïmplementeerd.

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

U kunt de status van de engine verifiëren door naar http://192.0.2.1:8000een moderne browser te gaan. Zorg ervoor dat u vervangt 192.0.2.1door uw werkelijke Vultr IP-adres.

Dit betekent dat de motorsjabloon voor E-commerce-aanbeveling is geïmplementeerd en met succes wordt uitgevoerd. U kunt de motorsjabloon opvragen om vijf aanbevelingen voor de gebruiker u5op te halen door de volgende query uit te voeren in een nieuwe terminalsessie.

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

U ziet de gegenereerde aanbevelingen voor de gebruiker 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}]}

Afsluiten

Gefeliciteerd, Apache PredictionIO is met succes op uw server geïmplementeerd. U kunt nu de API van de gebeurtenisserver gebruiken om de gegevens in de engine te importeren om de aanbevelingen voor de gebruiker te voorspellen. Als u wilt, kunt u enkele andere sjablonen uit de sjabloongalerij gebruiken. Zorg ervoor dat u de Universal Recommender- enginesjabloon bekijkt, die in bijna alle use-cases kan worden gebruikt, inclusief e-commerce, nieuws of video.



Leave a Comment

CyberPanel installeren en configureren op uw CentOS 7-server

CyberPanel installeren en configureren op uw CentOS 7-server

Gebruikt u een ander systeem? Introductie CyberPanel is een van de eerste bedieningspanelen op de markt die zowel open source is als OpenLiteSpeed ​​gebruikt. Wat thi

Sensu Monitoring installeren en configureren op CentOS 7

Sensu Monitoring installeren en configureren op CentOS 7

Introductie Sensu is een gratis en open source monitoringoplossing die kan worden gebruikt om server, applicatie en verschillende systeemservices te monitoren. Sensu i

Sudo gebruiken op Debian, CentOS en FreeBSD

Sudo gebruiken op Debian, CentOS en FreeBSD

Het gebruik van een sudo-gebruiker om toegang te krijgen tot een server en opdrachten uit te voeren op rootniveau is een veel voorkomende praktijk onder Linux en Unix-systeembeheerder. Het gebruik van een sud

Stel Nginx-RTMP in op CentOS 7

Stel Nginx-RTMP in op CentOS 7

Gebruikt u een ander systeem? RTMP is geweldig voor het weergeven van live inhoud. Wanneer RTMP is gekoppeld aan FFmpeg, kunnen streams worden omgezet in verschillende kwaliteiten. Vultr ik

Hoe TaskBoard 0.3.1 op CentOS 7 te installeren

Hoe TaskBoard 0.3.1 op CentOS 7 te installeren

TaskBoard is een gratis en open source webbeheer voor tijdbeheer. Geïnspireerd door Kanban, kan TaskBoard u helpen bij het bijhouden van dingen die moeten worden gedaan in een

Gradle installeren op CentOS 7

Gradle installeren op CentOS 7

Gebruikt u een ander systeem? Gradle is een gratis en open source toolset voor het automatiseren van builds, gebaseerd op de concepten van Apache Ant en Apache Maven. Gradle biedt

Installeer een FTP-server met ProFTPd op CentOS 6 of CentOS 7

Installeer een FTP-server met ProFTPd op CentOS 6 of CentOS 7

Gebruikt u een ander systeem? In deze handleiding zullen we zien hoe u een FTP-server (ProFTPd) configureert om bestanden over te zetten tussen uw pc en uw server.

Netdata installeren op CentOS 7

Netdata installeren op CentOS 7

Gebruikt u een ander systeem? Netdata is een rijzende ster op het gebied van realtime monitoring van systeemstatistieken. Vergeleken met andere tools van dezelfde soort, Netdata:

Hoe Apache Cassandra 3.11.x op CentOS 7 te installeren

Hoe Apache Cassandra 3.11.x op CentOS 7 te installeren

Gebruikt u een ander systeem? Apache Cassandra is een gratis en open source NoSQL-databasebeheersysteem dat is ontworpen om schaalbaarheid te bieden

Hoe Just Cause 2 (JC2-MP) -server op CentOS 7 te installeren

Hoe Just Cause 2 (JC2-MP) -server op CentOS 7 te installeren

In deze tutorial leer je goed hoe je een Just Cause 2 multiplayer-server opzet. Vereisten Zorg ervoor dat het systeem volledig is bijgewerkt voordat we beginnen

Hoe Starbound Server op CentOS 7 te installeren

Hoe Starbound Server op CentOS 7 te installeren

Gebruikt u een ander systeem? In deze tutorial leg ik uit hoe je een Starbound-server instelt op CentOS 7. Vereisten Je moet dit spel op je hebben

ZNC installeren en configureren op CentOS 7

ZNC installeren en configureren op CentOS 7

ZNC is een gratis en open-source IRC-uitsmijter die permanent verbonden blijft met een netwerk, zodat klanten berichten kunnen ontvangen die worden verzonden terwijl ze offline zijn. Thi

Django installeren op CentOS 7

Django installeren op CentOS 7

Django is een populair Python-framework voor het schrijven van webapplicaties. Met Django kun je sneller applicaties bouwen, zonder het wiel opnieuw uit te vinden. Als je wilt

MantisBT 2.5 installeren op CentOS 7

MantisBT 2.5 installeren op CentOS 7

MantisBT, of Mantis Bug Tracker, is een open source issue tracker geschreven in PHP. MantisBT is uitgebalanceerd tussen gebruiksgemak en functionaliteit, mits

Installeer Elgg op CentOS 7

Installeer Elgg op CentOS 7

Gebruikt u een ander systeem? Elgg is een open source engine voor sociaal netwerken waarmee sociale omgevingen kunnen worden gecreëerd, zoals sociale campusnetwerken

Hoe installeer ik het Froxlor Server Management Panel op CentOS 7

Hoe installeer ik het Froxlor Server Management Panel op CentOS 7

Froxlor is een open source, gratis, lichtgewicht en toch krachtig serverbeheerpaneel dat geweldig is voor het opzetten en beheren van webhostingservices. Thi

Hoe Alfresco Community Edition op CentOS 7 te installeren

Hoe Alfresco Community Edition op CentOS 7 te installeren

Gebruikt u een ander systeem? Alfresco Community Edition is een open source-versie van de Alfresco Content Services. Het is geschreven in Java en gebruikt PostgreSQL t

Hoe Vtiger CRM Open Source Edition op CentOS 7 te installeren

Hoe Vtiger CRM Open Source Edition op CentOS 7 te installeren

Vtiger CRM is een populaire applicatie voor klantrelatiebeheer die bedrijven kan helpen hun verkoop te laten groeien, klantenservice te bieden en de winst te vergroten. ik

Een netwerk van Minecraft-servers maken met BungeeCord op Debian 8, Debian 9 of CentOS 7

Een netwerk van Minecraft-servers maken met BungeeCord op Debian 8, Debian 9 of CentOS 7

Wat je nodig hebt Een Vultr VPS met minimaal 1 GB RAM. SSH-toegang (met root- / beheerdersrechten). Stap 1: BungeeCord installeren Eerste dingen eerst

Hoe MaraDNS op CentOS 6 te installeren

Hoe MaraDNS op CentOS 6 te installeren

MaraDNS is een lichtgewicht maar robuust open source DNS-serverprogramma. Vergeleken met andere applicaties van dezelfde soort, zoals ISC BIND, PowerDNS en djbdns

Kan AI vechten met toenemend aantal ransomware-aanvallen?

Kan AI vechten met toenemend aantal ransomware-aanvallen?

Ransomware-aanvallen nemen toe, maar kan AI helpen het nieuwste computervirus het hoofd te bieden? Is AI het antwoord? Lees hier weten is AI boezem of vloek

ReactOS: is dit de toekomst van Windows?

ReactOS: is dit de toekomst van Windows?

ReactOS, een open source en gratis besturingssysteem is hier met de nieuwste versie. Kan het voldoen aan de behoeften van moderne Windows-gebruikers en Microsoft uitschakelen? Laten we meer te weten komen over deze oude stijl, maar een nieuwere OS-ervaring.

Blijf verbonden via WhatsApp Desktop-app 24 * 7

Blijf verbonden via WhatsApp Desktop-app 24 * 7

WhatsApp heeft eindelijk de Desktop-app voor Mac- en Windows-gebruikers gelanceerd. Nu heb je eenvoudig toegang tot WhatsApp vanuit Windows of Mac. Beschikbaar voor Windows 8+ en Mac OS 10.9+

Hoe AI procesautomatisering naar een hoger niveau kan tillen?

Hoe AI procesautomatisering naar een hoger niveau kan tillen?

Lees dit om te weten hoe kunstmatige intelligentie populair wordt onder de kleinschalige bedrijven en hoe het de kansen vergroot om ze te laten groeien en hun concurrenten voorsprong te geven.

macOS Catalina 10.15.4 Supplement Update veroorzaakt meer problemen dan het oplost

macOS Catalina 10.15.4 Supplement Update veroorzaakt meer problemen dan het oplost

Onlangs heeft Apple macOS Catalina 10.15.4 uitgebracht, een aanvullende update om problemen op te lossen, maar het lijkt erop dat de update meer problemen veroorzaakt die ertoe leiden dat mac-machines worden gemetseld. Lees dit artikel voor meer informatie

13 Commerciële data-extractietools voor big data

13 Commerciële data-extractietools voor big data

13 Commerciële data-extractietools voor big data

Wat is een logboekbestandssysteem en hoe werkt het?

Wat is een logboekbestandssysteem en hoe werkt het?

Onze computer slaat alle gegevens op een georganiseerde manier op, het zogenaamde Journaling-bestandssysteem. Het is een efficiënte methode waarmee de computer bestanden kan zoeken en weergeven zodra u op zoeken drukt.https://wethegeek.com/?p=94116&preview=true

Technologische singulariteit: een verre toekomst van de menselijke beschaving?

Technologische singulariteit: een verre toekomst van de menselijke beschaving?

Naarmate de wetenschap zich snel ontwikkelt en veel van onze inspanningen overneemt, nemen ook de risico's toe om onszelf te onderwerpen aan een onverklaarbare singulariteit. Lees, wat singulariteit voor ons kan betekenen.

Een inzicht in 26 Big Data-analysetechnieken: deel 1

Een inzicht in 26 Big Data-analysetechnieken: deel 1

Een inzicht in 26 Big Data-analysetechnieken: deel 1

De impact van kunstmatige intelligentie in de gezondheidszorg 2021

De impact van kunstmatige intelligentie in de gezondheidszorg 2021

AI in de zorg heeft de afgelopen decennia grote sprongen gemaakt. De toekomst van AI in de gezondheidszorg groeit dus nog steeds met de dag.