Kako namestiti in uporabiti Apache PredictionIO za strojno učenje na CentOS 7

Tradicionalnih pristopov k analizi podatkov je nemogoče uporabiti, ko nabori podatkov dosežejo določeno velikost. Sodobna alternativa za analizo ogromnih nizov podatkov je uporaba metod strojnega učenja. Strojno učenje lahko prinese natančne rezultate z uporabo hitrega in učinkovitega algoritma.

Apache PredictionIO je odprtokodni strežnik za strojno učenje, ki se uporablja za ustvarjanje napovednih motorjev za katero koli nalogo strojnega učenja. Skrajša čas aplikacije strojnega učenja od laboratorija do proizvodnje z uporabo prilagodljivih predlog motorjev, ki jih je mogoče hitro zgraditi in uvesti. Zagotavlja komponente za zbiranje in serviranje podatkov ter abstrahira osnovno tehnologijo, da razkrije API, ki razvijalcem omogoča, da se osredotočijo na komponente transformacije. Ko je strežnik motorja PredictionIO nameščen kot spletna storitev, se lahko v realnem času odzove na dinamične poizvedbe.

Apache PredictionIO je sestavljen iz različnih komponent.

  • PredictionIO Platforma : odprtokodni sklad strojnega učenja, zgrajen na vrhu nekaterih najsodobnejših odprtokodnih aplikacij, kot so Apache Spark, Apache Hadoop, Apache HBase in Elasticsearch.
  • Strežnik dogodkov : ta neprekinjeno zbira podatke iz vašega spletnega strežnika ali strežnika mobilnih aplikacij v realnem času ali paketnem načinu. Zbrane podatke je mogoče uporabiti za usposabljanje motorja ali za zagotavljanje enotnega pogleda za analizo podatkov. Strežnik dogodkov za shranjevanje podatkov uporablja Apache HBase.
  • Engine Server : Strežnik motorja je odgovoren za izdelavo dejanskega predvidevanja. Prebere podatke o usposabljanju iz shrambe podatkov in uporablja enega ali več algoritmov strojnega učenja za gradnjo napovednih modelov. Motor, ko je enkrat nameščen kot spletna storitev, se odzove na poizvedbe spletne ali mobilne aplikacije z uporabo REST API ali SDK.
  • Galerija predlog : Ta galerija ponuja različne vrste vnaprej izdelanih predlog motorjev. Izberete lahko predlogo, ki je podobna vašemu primeru uporabe, in jo spremenite glede na vaše zahteve.

Predpogoji

  • Primerek strežnika Vultr CentOS 7 z vsaj 8 GB RAM-a. Za namene testiranja in razvoja lahko izberete primerek s 4 GB RAM-a in še 4 GB zamenljivega pomnilnika .
  • Uporabnik sudo .

V tej vadnici bomo uporabili 192.0.2.1kot javni naslov IP strežnika. Zamenjajte vse pojavnosti 192.0.2.1z vašim javnim IP naslovom Vultr.

Posodobite svoj osnovni sistem z uporabo priročnika Kako posodobiti CentOS 7 . Ko je vaš sistem posodobljen, nadaljujte z namestitvijo Jave.

Namesti Java

Številne komponente PredictionIO zahtevajo JDK ali Java Development Kit, različica 8. Podpira tako OpenJDK kot Oracle Java. V tej vadnici bomo namestili OpenJDK različice 8.

OpenJDK je mogoče enostavno namestiti, saj je paket na voljo v privzetem repozitoriju YUM.

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

Preverite različico Jave, da se prepričate, da je bila pravilno nameščena.

java -version

Dobili boste podoben rezultat.

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

Preden lahko nadaljujemo, bomo morali nastaviti spremenljivke okolja JAVA_HOMEin JRE_HOME. Poiščite absolutno pot izvršljive datoteke JAVA v vašem sistemu.

readlink -f $(which java)

Videli boste podoben izhod.

[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

Zdaj nastavite JAVA_HOMEin JRE_HOMEspremenljivko okolja glede na pot imenika Java.

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

Izvedite bash_profiledatoteko.

source ~/.bash_profile

Zdaj lahko zaženete echo $JAVA_HOMEukaz, da preverite, ali je spremenljivka okolja nastavljena.

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

Namesti PredictionIO

Apache ponuja izvorne datoteke PredictionIO, ki jih je mogoče prenesti in prevesti lokalno. Ustvarite nov začasni imenik za prenos in prevajanje izvorne datoteke.

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

Prenesite arhiv izvorne datoteke PredictionIO s katerim koli spletnim mestom Apache Mirror .

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

Ekstrahirajte arhiv in prevedite vir, da ustvarite distribucijo PredictionIO.

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

Zgornja distribucija bo zgrajena na podlagi privzetih različic odvisnosti, ki so Scala 2.11.8, Spark 2.1.1, Hadoop 2.7.3in ElasticSearch 5.5.2. Počakajte, da se izdelava konča, traja približno deset minut, odvisno od zmogljivosti vašega sistema.

Opomba : lahko uporabljate najnovejšo podprto različico odvisnosti, vendar boste med gradnjo morda videli nekaj opozoril, saj so nekatere funkcije morda zastarele. Zaženite ./make-distribution.sh -Dscala.version=2.11.11 -Dspark.version=2.1.2 -Dhadoop.version=2.7.4 -Delasticsearch.version=5.5.3in zamenjajte številko različice po vaši izbiri.

Ko se gradnja uspešno zaključi, boste na koncu videli naslednje sporočilo.

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

Binarne datoteke PredictionIO bodo shranjene v PredictionIO-0.12.0-incubating.tar.gzarhiv. Izvlecite arhiv v /optimenik in zagotovite lastništvo trenutnemu uporabniku.

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

Nastavite PIO_HOMEspremenljivko okolja.

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

Namestite zahtevane odvisnosti

Ustvarite nov imenik za namestitev odvisnosti PredictionIO, kot sta HBase, Sparkin Elasticsearch.

mkdir /opt/PredictionIO-0.12.0-incubating/vendors

Prenesite različico Scala 2.11.8 in jo ekstrahirajte v vendorsimenik.

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

Prenesite Apache Hadoop različico 2.7.3 in ga ekstrahirajte v vendorsimenik.

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 je privzeti mehanizem za obdelavo za PredictionIO. Prenesite Spark različico 2.1.1 in jo ekstrahirajte v vendorsimenik.

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

Prenesite Elasticsearch različico 5.5.2 in ga ekstrahirajte v vendorsimenik.

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

Končno prenesite HBase različico 1.2.6 in jo ekstrahirajte v vendorsimenik.

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

Odprite hbase-site.xmlkonfiguracijsko datoteko, da konfigurirate HBase za delovanje v samostojnem okolju.

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

Poiščite prazen konfiguracijski blok in ga zamenjajte z naslednjo konfiguracijo.

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

Podatkovni imenik bo samodejno ustvaril HBase. Uredite okoljsko datoteko HBase, da nastavite JAVA_HOMEpot.

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

Odkomentirajte številko vrstice 27 in jo nastavite JAVA_HOMEna pot jrevaše namestitve Jave. Pot do izvedljive datoteke JAVA lahko najdete z readlink -f $(which java)ukazom.

# 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

Prav tako zakomentirajte številki vrstic 46 in 47, saj nista potrebni za 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"

Konfigurirajte okolje PredictionIO

Privzeta konfiguracija v okoljski datoteki PredictionIO pio-env.shpredvideva, da uporabljamo PostgreSQL ali MySQL. Ker smo uporabili HBase in Elasticsearch, bomo morali spremeniti skoraj vsako konfiguracijo v datoteki. Najbolje je, da naredite varnostno kopijo obstoječe datoteke in ustvarite novo okoljsko datoteko PredictionIO.

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

Zdaj ustvarite novo datoteko za konfiguracijo okolja PredictionIO.

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

Zapolnite datoteko z naslednjo konfiguracijo.

# 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

Shranite datoteko in zapustite urejevalnik.

Odprite konfiguracijsko datoteko Elasticsearch.

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

Odkomentirajte vrstico in nastavite ime gruče na popolnoma enako tistemu, ki je navedeno v okoljski datoteki PredictionIO. Ime gruče je piov zgornji konfiguraciji nastavljeno na.

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

Zdaj dodajte $PIO_HOME/binimenik v spremenljivko PATH, tako da se izvedljive datoteke PredictionIO izvajajo neposredno.

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

Na tej točki je PredictionIO uspešno nameščen na vašem strežniku.

Zagon PredictionIO

Z enim ukazom lahko zaženete vse storitve v PredictionIO, kot so Elasticsearch, HBase in Event server.

pio-start-all

Videli boste naslednji izhod.

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

Za preverjanje stanja strežnika PredictionIO uporabite naslednji ukaz.

pio status

Videli boste naslednji izhod.

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

V tej vadnici bomo implementirali E-Commerce Recommendationpredlogo motorja za prikaz funkcionalnosti strežnika PredictionIO z uporabo nekaterih vzorčnih podatkov. Ta predloga motorja uporabniku na spletnem mestu e-trgovine nudi nekaj osebnih priporočil. Privzeto ima funkcije, kot je izključitev artiklov, ki jih ni na zalogi, ali dajanje priporočil uporabniku, ki se prijavi po tem, ko je model usposobljen. Tudi predloga motorja privzeto prevzame uporabnikov pogled in dogodke nakupa, predmete s kategorijami in lastnostmi ter seznam nedostopnih predmetov. Ko je motor usposobljen in nameščen, lahko pošljete poizvedbo z ID-jem uporabnika in številom elementov, ki jih priporočate. Ustvarjen rezultat bo razvrščen seznam priporočenih ID-jev artiklov.

Namestite Git, saj bo uporabljen za kloniranje repozitorija.

cd ~    
sudo yum -y install git

Klonirajte predlogo motorja E-Commerce Recommender v vašem sistemu.

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

Ustvarite novo aplikacijo za mehanizem za predloge priporočil za e-trgovino. Vsaka aplikacija v PredictionIO se uporablja za shranjevanje podatkov za ločeno spletno mesto. Če imate več spletnih mest, lahko ustvarite več aplikacij za shranjevanje podatkov vsakega spletnega mesta v drugo aplikacijo. Za svojo aplikacijo lahko izberete poljubno ime.

cd MyEComRecomm/
pio app new myecom

Videli boste naslednji izhod.

[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

Zgornji izhod vsebuje tudi dostopni ključ, ki bo uporabljen za preverjanje pristnosti pri pošiljanju vhodnih podatkov strežniku dogodkov.

Z zagonom lahko vedno najdete ključ za dostop skupaj s seznamom razpoložljivih aplikacij.

pio app list

Videli boste naslednji izhod, ki vsebuje seznam aplikacij in ključ za dostop.

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

Zdaj, ko smo ustvarili novo aplikacijo, ji bomo dodali nekaj podatkov. V produkcijskem okolju bi želeli samodejno poslati podatke strežniku dogodkov z integracijo API strežnika dogodkov v aplikacijo. Če želite izvedeti, kako deluje PredictionIO, bomo vanj uvozili nekaj vzorčnih podatkov. Mehanizem predlog zagotavlja skript Python, ki ga je mogoče enostavno uporabiti za uvoz vzorčnih podatkov v strežnik dogodkov.

Namestite Python pip.

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

Namestite PredictionIO Python SDK z uporabo pip.

sudo pip install predictionio

Zaženite skript Python, da dodate vzorčne podatke strežniku dogodkov.

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

Ne pozabite zamenjati ključa za dostop z vašim dejanskim ključem za dostop. Videli boste podoben izhod.

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

Zgornji skript uvozi 10 uporabnikov, 50 artiklov v 6 kategorijah in nekaj naključnih dogodkov nakupov in ogledov. Če želite preveriti, ali so dogodki uvoženi ali ne, lahko zaženete naslednjo poizvedbo.

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

Izhod vam bo prikazal seznam vseh uvoženih dogodkov v formatu JSON.

Zdaj odprite engine.jsondatoteko v urejevalniku. Ta datoteka vsebuje konfiguracijo motorja.

nano engine.json

Poiščite obe pojavitvi appNamein zamenjajte vrednost z dejanskim imenom aplikacije, ki ste jo ustvarili prej.

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

Zgradite aplikacijo.

pio build --verbose

Če ne želite videti dnevniških sporočil, odstranite to --verbosemožnost. Prva izdelava predloge motorja bo trajala nekaj minut. Podoben rezultat boste videli, ko se bo gradnja uspešno končala.

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

Usposobite motor zdaj. Med usposabljanjem motor analizira nabor podatkov in se trenira po predloženem algoritmu.

pio train

Preden razmestimo aplikacijo, bomo morali odpreti vrata 8000, da si bo mogoče stanje aplikacije ogledati v spletnem GUI. Prav tako bodo spletna mesta in aplikacije, ki uporabljajo strežnik dogodkov, pošiljale in prejemale svoje poizvedbe prek teh vrat.

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

Zdaj lahko uvedete motor PredictionIO.

pio deploy

Zgornji ukaz bo razmestil motor in vgrajeni spletni strežnik na vratih, 8000da se odzove na poizvedbe s spletnih mest in aplikacij za e-trgovino. Ko bo motor uspešno nameščen, boste na koncu videli naslednji rezultat.

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

Stanje motorja lahko preverite tako, da http://192.0.2.1:8000uporabite kateri koli sodoben brskalnik. Prepričajte se, da ste zamenjali 192.0.2.1s svojim dejanskim naslovom IP Vultr.

To pomeni, da je predloga motorja za priporočilo za e-trgovino nameščena in uspešno deluje. Predlogo motorja lahko poizvedujete za pridobitev petih priporočil za uporabnika, u5tako da zaženete naslednjo poizvedbo v novi terminalski seji.

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

Videli boste ustvarjena priporočila za uporabnika 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}]}

Zavijanje

Čestitamo, Apache PredictionIO je bil uspešno nameščen na vašem strežniku. Zdaj lahko uporabite API strežnika dogodkov za uvoz podatkov v mehanizem za predvidevanje priporočil za uporabnika. Če želite, lahko uporabite nekatere druge predloge iz galerije predlog. Ne pozabite preveriti predloge motorja Universal Recommender, ki se lahko uporablja v skoraj vseh primerih uporabe, vključno z e-trgovino, novicami ali videoposnetki.


Namestite Plesk na CentOS 7

Namestite Plesk na CentOS 7

Uporaba drugega sistema? Plesk je lastniška nadzorna plošča spletnega gostitelja, ki uporabnikom omogoča upravljanje svojih osebnih in/ali strank spletnih mest, baz podatkov

Kako namestiti Squid Proxy na CentOS

Kako namestiti Squid Proxy na CentOS

Squid je priljubljen brezplačen program za Linux, ki vam omogoča ustvarjanje spletnega proxyja za posredovanje. V tem priročniku boste videli, kako namestiti Squid na CentOS, da vas obrne

Kako namestiti Lighttpd (LLMP Stack) na CentOS 6

Kako namestiti Lighttpd (LLMP Stack) na CentOS 6

Uvod Lighttpd je razdelek Apache, katerega namen je biti veliko manj intenziven vir. Je lahek, od tod tudi njegovo ime, in je precej preprost za uporabo. Namestite

Konfiguriranje statičnega omrežja in IPv6 na CentOS 7

Konfiguriranje statičnega omrežja in IPv6 na CentOS 7

VULTR je pred kratkim naredil spremembe na svoji strani in zdaj bi moralo vse delovati v redu iz škatle z omogočenim NetworkManagerjem. Če želite onemogočiti

Spreminjanje Icinga2 za uporabo modela Master/Client na CentOS 6 ali CentOS 7

Spreminjanje Icinga2 za uporabo modela Master/Client na CentOS 6 ali CentOS 7

Icinga2 je zmogljiv sistem za spremljanje in če se uporablja v modelu glavni-odjemalec, lahko nadomesti potrebo po nadzornih pregledih, ki temeljijo na NRPE. Glavni naročnik

Kako namestiti Apache Cassandra 3.11.x na CentOS 7

Kako namestiti Apache Cassandra 3.11.x na CentOS 7

Uporaba drugega sistema? Apache Cassandra je brezplačen in odprtokodni sistem za upravljanje baz podatkov NoSQL, ki je zasnovan tako, da zagotavlja razširljivost, visoko

Kako namestiti Microweber na CentOS 7

Kako namestiti Microweber na CentOS 7

Uporaba drugega sistema? Microweber je odprtokodna povleci in spusti CMS in spletna trgovina. Izvorna koda Microweber gostuje na GitHubu. Ta vodnik vam bo pokazal

Kako namestiti Mattermost 4.1 na CentOS 7

Kako namestiti Mattermost 4.1 na CentOS 7

Uporaba drugega sistema? Mattermost je odprtokodna alternativa sporočilni storitvi Slack SAAS, ki jo gosti sami. Z drugimi besedami, z Mattermostom si pribl

Ustvarjanje omrežja strežnikov Minecraft z BungeeCord na Debian 8, Debian 9 ali CentOS 7

Ustvarjanje omrežja strežnikov Minecraft z BungeeCord na Debian 8, Debian 9 ali CentOS 7

Kaj potrebujete Vultr VPS z vsaj 1 GB RAM-a. SSH dostop (z root/administrativnimi pravicami). 1. korak: Namestitev BungeeCord Najprej najprej

Omogočamo šifriranje na Plesku

Omogočamo šifriranje na Plesku

Nadzorna plošča Plesk ima zelo lepo integracijo za Lets Encrypt. Lets Encrypt je eden edinih ponudnikov SSL, ki izdaja potrdila v celoti

Namestite MariaDB 10 na CentOS 6

Namestite MariaDB 10 na CentOS 6

V času pisanja je MariaDB 10.1 razvojna različica MariaDB. Temelji na MariaDB 5.5 in vključuje funkcije, prenesene nazaj iz MySQL 5.6. Ther

Omogoča šifriranje na cPanelu

Omogoča šifriranje na cPanelu

Lets Encrypt je certifikacijski organ, ki je namenjen brezplačnemu zagotavljanju certifikatov SSL. cPanel je zgradil lepo integracijo za vas in vašo stranko

Kako namestiti Concrete5 na CentOS 7

Kako namestiti Concrete5 na CentOS 7

Uporaba drugega sistema? Concrete5 je odprtokodni CMS, ki ponuja številne značilne in uporabne funkcije za pomoč urednikom pri preprosti izdelavi vsebine.

Kako namestiti pregledno ploščo na CentOS 7

Kako namestiti pregledno ploščo na CentOS 7

Uporaba drugega sistema? Review Board je brezplačno in odprtokodno orodje za pregledovanje izvorne kode, dokumentacije, slik in še veliko več. Gre za spletno programsko opremo

Nastavite preverjanje pristnosti HTTP z Nginxom na CentOS 7

Nastavite preverjanje pristnosti HTTP z Nginxom na CentOS 7

V tem priročniku se boste naučili, kako nastaviti preverjanje pristnosti HTTP za spletni strežnik Nginx, ki deluje na CentOS 7. Zahteve Za začetek boste potrebovali

Kako namestiti YOURLS na CentOS 7

Kako namestiti YOURLS na CentOS 7

YOURLS (Your Own URL Shortener) je odprtokodna aplikacija za krajšanje URL-jev in analitiko podatkov. V tem članku bomo obravnavali postopek namestitve

Kako namestiti in konfigurirati ArangoDB na CentOS 7

Kako namestiti in konfigurirati ArangoDB na CentOS 7

Uporaba drugega sistema? Uvod ArangoDB je odprtokodna baza podatkov NoSQL s prilagodljivim podatkovnim modelom za dokumente, grafe in ključe-vrednosti. je

Uporaba Etckeeperja za nadzor različic /etc

Uporaba Etckeeperja za nadzor različic /etc

Uvod Imenik /etc/ igra ključno vlogo pri delovanju sistema Linux. Razlog za to je skoraj vsaka sistemska konfiguracija

Zakaj bi morali uporabljati SSHFS? Kako namestiti oddaljeni datotečni sistem s SSHFS na CentOS 6

Zakaj bi morali uporabljati SSHFS? Kako namestiti oddaljeni datotečni sistem s SSHFS na CentOS 6

Številni sistemski skrbniki upravljajo velike količine strežnikov. Ko je treba do datotek dostopati prek različnih strežnikov, se prijavite v vsakega posebej ca

Nastavitev strežnika Half Life 2 na CentOS 6

Nastavitev strežnika Half Life 2 na CentOS 6

Ta vadnica bo obravnavala postopek namestitve igralnega strežnika Half Life 2 na sistem CentOS 6. 1. korak: Namestitev predpogojev Za nastavitev ou

Vzpon strojev: aplikacije AI v resničnem svetu

Vzpon strojev: aplikacije AI v resničnem svetu

Umetna inteligenca ni v prihodnosti, tukaj je prav v sedanjosti. V tem blogu preberite, kako so aplikacije umetne inteligence vplivale na različne sektorje.

DDOS napadi: kratek pregled

DDOS napadi: kratek pregled

Ste tudi vi žrtev DDOS napadov in ste zmedeni glede načinov preprečevanja? Preberite ta članek, če želite rešiti svoja vprašanja.

Ste se kdaj vprašali, kako hekerji zaslužijo denar?

Ste se kdaj vprašali, kako hekerji zaslužijo denar?

Morda ste že slišali, da hekerji zaslužijo veliko denarja, a ste se kdaj vprašali, kako zaslužijo takšen denar? razpravljajmo.

Revolucionarni Googlovi izumi, ki vam bodo olajšali življenje.

Revolucionarni Googlovi izumi, ki vam bodo olajšali življenje.

Ali želite videti revolucionarne izume Googla in kako so ti izumi danes spremenili življenje vsakega človeka? Nato preberite v blogu in si oglejte Googlove izume.

Friday Essential: Kaj se je zgodilo z avtomobili, ki jih poganja umetna inteligenca?

Friday Essential: Kaj se je zgodilo z avtomobili, ki jih poganja umetna inteligenca?

Koncept samovozečih avtomobilov, ki zapeljejo na ceste s pomočjo umetne inteligence, so sanje, ki jih imamo že nekaj časa. A kljub številnim obljubam jih ni nikjer. Preberite ta blog, če želite izvedeti več…

Tehnološka singularnost: oddaljena prihodnost človeške civilizacije?

Tehnološka singularnost: oddaljena prihodnost človeške civilizacije?

Ker se znanost hitro razvija in prevzame veliko naših prizadevanj, se povečuje tudi tveganje, da se podvržemo nerazložljivi singularnosti. Preberite, kaj bi za nas lahko pomenila singularnost.

Razvoj shranjevanja podatkov – Infografika

Razvoj shranjevanja podatkov – Infografika

Metode shranjevanja podatkov so se lahko razvijale od rojstva podatkov. Ta blog pokriva razvoj shranjevanja podatkov na podlagi infografike.

Funkcionalnosti slojev referenčne arhitekture velikih podatkov

Funkcionalnosti slojev referenčne arhitekture velikih podatkov

Preberite blog, če želite na najpreprostejši način spoznati različne plasti v arhitekturi velikih podatkov in njihove funkcionalnosti.

6 neverjetnih prednosti pametnih naprav za dom v našem življenju

6 neverjetnih prednosti pametnih naprav za dom v našem življenju

V tem digitalno vodenem svetu so pametne naprave za dom postale ključni del življenja. Tukaj je nekaj neverjetnih prednosti pametnih naprav za dom o tem, kako naredijo naše življenje vredno življenja in poenostavijo.

Posodobitev dodatka macOS Catalina 10.15.4 povzroča več težav kot jih rešuje

Posodobitev dodatka macOS Catalina 10.15.4 povzroča več težav kot jih rešuje

Pred kratkim je Apple izdal macOS Catalina 10.15.4 dopolnilno posodobitev za odpravo težav, vendar se zdi, da posodobitev povzroča več težav, ki vodijo do opečenja računalnikov Mac. Preberite ta članek, če želite izvedeti več