Kaip įdiegti ir naudoti „Apache PredictionIO“ mašininiam mokymuisi „CentOS 7“.

Kai duomenų rinkiniai pasiekia tam tikrą dydį, tradicinių duomenų analizės metodų naudoti neįmanoma. Šiuolaikinė alternatyva didžiulių duomenų rinkinių analizei yra mašininio mokymosi metodai. Mašininis mokymasis gali duoti tikslių rezultatų, kai naudojamas greitas ir efektyvus algoritmas.

Apache PredictionIO yra atvirojo kodo mašininio mokymosi serveris, naudojamas kuriant nuspėjamuosius variklius bet kuriai mašininio mokymosi užduočiai atlikti. Naudojant tinkinamus variklio šablonus, kuriuos galima greitai sukurti ir įdiegti, sutrumpėja mašininio mokymosi programos laikas nuo laboratorijos iki gamybos. Jame pateikiami duomenų rinkimo ir aptarnavimo komponentai bei pateikiamos pagrindinės technologijos, kad būtų atskleista API, leidžianti kūrėjams sutelkti dėmesį į transformacijos komponentus. Kai PredictionIO variklio serveris yra įdiegtas kaip žiniatinklio paslauga, jis gali atsakyti į dinamines užklausas realiuoju laiku.

„Apache PredictionIO“ susideda iš skirtingų komponentų.

  • „PredictionIO“ platforma : atvirojo kodo mašininio mokymosi krūva, sukurta remiantis kai kuriomis moderniausiomis atvirojo kodo programomis, tokiomis kaip „Apache Spark“, „Apache Hadoop“, „Apache HBase“ ir „Elasticsearch“.
  • Įvykių serveris : jis nuolat renka duomenis iš žiniatinklio serverio arba mobiliųjų programų serverio realiojo laiko arba paketiniu režimu. Surinkti duomenys gali būti naudojami varikliui apmokyti arba pateikti vieningą duomenų analizės vaizdą. Įvykių serveris duomenims saugoti naudoja „Apache HBase“.
  • Variklio serveris : variklio serveris yra atsakingas už faktinio numatymo sudarymą. Jis nuskaito mokymo duomenis iš duomenų saugyklos ir naudoja vieną ar kelis mašininio mokymosi algoritmus nuspėjamiesiems modeliams kurti. Variklis, įdiegtas kaip žiniatinklio paslauga, atsako į žiniatinklio arba programos mobiliesiems užklausas naudodamas REST API arba SDK.
  • Šablonų galerija : šioje galerijoje siūlomi įvairių tipų iš anksto sukurti variklio šablonai. Galite pasirinkti šabloną, panašų į jūsų naudojimo atvejį, ir modifikuoti jį pagal savo poreikius.

Būtinos sąlygos

  • „Vultr CentOS 7“ serverio egzempliorius su mažiausiai 8 GB RAM. Testavimo ir kūrimo tikslais galite pasirinkti egzempliorių su 4 GB RAM ir kita 4 GB mainų atmintimi .
  • Sudo vartotojas .

Šioje pamokoje naudosime 192.0.2.1kaip viešąjį serverio IP adresą. Pakeiskite visus atvejus 192.0.2.1savo Vultr viešuoju IP adresu.

Atnaujinkite bazinę sistemą naudodami vadovą Kaip atnaujinti CentOS 7 . Kai sistema bus atnaujinta, tęskite „Java“ diegimą.

Įdiegti Java

Kad veiktų daugelis PredictionIO komponentų, reikalingas JDK arba Java Development Kit 8 versija. Jis palaiko ir OpenJDK, ir Oracle Java. Šioje pamokoje mes įdiegsime OpenJDK 8 versiją.

OpenJDK galima lengvai įdiegti, nes paketą galima rasti numatytojoje YUM saugykloje.

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

Patikrinkite „Java“ versiją, kad įsitikintumėte, jog ji tinkamai įdiegta.

java -version

Jūs gausite panašią išvestį.

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

Prieš tęsdami toliau, turėsime nustatyti JAVA_HOMEir JRE_HOMEaplinkos kintamuosius. Raskite absoliutų JAVA vykdomosios programos kelią savo sistemoje.

readlink -f $(which java)

Pamatysite panašų išvestį.

[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

Dabar nustatykite JAVA_HOMEir JRE_HOMEaplinkos kintamąjį pagal „Java“ katalogo kelią.

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

Vykdykite bash_profilefailą.

source ~/.bash_profile

Dabar galite paleisti echo $JAVA_HOMEkomandą, kad patikrintumėte, ar nustatytas aplinkos kintamasis.

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

Įdiekite „PredictionIO“.

„Apache“ teikia „PredictionIO“ šaltinio failus, kuriuos galima atsisiųsti ir sukompiliuoti vietoje. Norėdami atsisiųsti ir kompiliuoti šaltinio failą, sukurkite naują laikiną katalogą.

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

Atsisiųskite „PredictionIO“ šaltinio failų archyvą naudodami bet kurią „ Apache Mirror“ svetainę .

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

Ištraukite archyvą ir sukompiliuokite šaltinį, kad sukurtumėte PredictionIO paskirstymą.

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

Aukščiau pateiktas paskirstymas bus sukurtas pagal numatytąsias priklausomybių versijas, kurios yra Scala 2.11.8, Spark 2.1.1, Hadoop 2.7.3ir ElasticSearch 5.5.2. Palaukite, kol bus baigtas kūrimas. Tai užtruks apie dešimt minučių, atsižvelgiant į jūsų sistemos našumą.

Pastaba : galite laisvai naudoti naujausią palaikomą priklausomybių versiją, tačiau kūrimo metu galite matyti keletą įspėjimų, nes kai kurios funkcijos gali būti nebenaudojamos. Vykdykite ./make-distribution.sh -Dscala.version=2.11.11 -Dspark.version=2.1.2 -Dhadoop.version=2.7.4 -Delasticsearch.version=5.5.3, pakeisdami versijos numerį pagal savo pasirinkimą.

Sėkmingai užbaigus kūrimą, pabaigoje pamatysite šį pranešimą.

...
PredictionIO-0.12.0-incubating/python/pypio/__init__.py
PredictionIO-0.12.0-incubating/python/pypio/utils.py
PredictionIO-0.12.0-incubating/python/pypio/shell.py
PredictionIO binary distribution created at PredictionIO-0.12.0-incubating.tar.gz

PredictionIO dvejetainiai failai bus išsaugoti PredictionIO-0.12.0-incubating.tar.gzarchyve. Išskleiskite archyvą /optkataloge ir suteikite nuosavybės teisę dabartiniam vartotojui.

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

Nustatykite PIO_HOMEaplinkos kintamąjį.

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

Įdiekite būtinas priklausomybes

Sukurkite naują katalogą, kad įdiegtumėte PredictionIO priklausomybes, tokias kaip HBase, Sparkir Elasticsearch.

mkdir /opt/PredictionIO-0.12.0-incubating/vendors

Atsisiųskite Scala 2.11.8 versiją ir išskleiskite ją į vendorskatalogą.

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

Atsisiųskite „Apache Hadoop“ 2.7.3 versiją ir išskleiskite ją į vendorskatalogą.

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“ yra numatytasis „PredictionIO“ apdorojimo variklis. Atsisiųskite Spark 2.1.1 versiją ir išskleiskite ją į vendorskatalogą.

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

Atsisiųskite Elasticsearch 5.5.2 versiją ir išskleiskite ją į vendorskatalogą.

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

Galiausiai atsisiųskite HBase 1.2.6 versiją ir išskleiskite ją į vendorskatalogą.

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

Atidarykite hbase-site.xmlkonfigūracijos failą, kad sukonfigūruotumėte HBase veikti atskiroje aplinkoje.

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

Raskite tuščią konfigūracijos bloką ir pakeiskite jį tokia konfigūracija.

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

Duomenų katalogą automatiškai sukurs HBase. Redaguokite HBase aplinkos failą, kad nustatytumėte JAVA_HOMEkelią.

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

Panaikinkite 27 eilutės komentarą ir nustatykite „ Java“ diegimo JAVA_HOMEkelią jre. Kelią į JAVA vykdomąjį failą galite rasti naudodami readlink -f $(which java)komandą.

# 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

Taip pat pakomentuokite 46 ir 47 eilutes, nes JAVA 8 jų nereikia.

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

Konfigūruokite PredictionIO aplinką

Numatytoji konfigūracija PredictionIO aplinkos faile pio-env.shdaro prielaidą, kad naudojame PostgreSQL arba MySQL. Kadangi naudojome HBase ir Elasticsearch, turėsime pakeisti beveik kiekvieną failo konfigūraciją. Geriausia pasidaryti esamo failo atsarginę kopiją ir sukurti naują PredictionIO aplinkos failą.

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

Dabar sukurkite naują PredictionIO aplinkos konfigūracijos failą.

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

Užpildykite failą su tokia konfigūracija.

# 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

Išsaugokite failą ir išeikite iš redaktoriaus.

Atidarykite Elasticsearch konfigūracijos failą.

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

Panaikinkite eilutės komentarą ir nustatykite klasterio pavadinimą tiksliai taip, kaip nurodytas PredictionIO aplinkos faile. Aukščiau piopateiktoje konfigūracijoje nustatytas klasterio pavadinimas .

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

Dabar pridėkite $PIO_HOME/binkatalogą į PATH kintamąjį, kad PredictionIO vykdomieji failai būtų vykdomi tiesiogiai.

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

Šiuo metu „PredictionIO“ sėkmingai įdiegtas jūsų serveryje.

Paleidžiama PredictionIO

Galite paleisti visas „PredictionIO“ paslaugas, tokias kaip „Elasticsearch“, „HBase“ ir „Event server“, naudodami vieną komandą.

pio-start-all

Pamatysite tokią išvestį.

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

Norėdami patikrinti PredictionIO serverio būseną, naudokite šią komandą.

pio status

Pamatysite tokią išvestį.

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

Šioje pamokoje įdiegsime E-Commerce Recommendationvariklio šabloną, kad parodytume „PredictionIO“ serverio funkcionalumą naudodami kai kuriuos duomenų pavyzdžius. Šiame variklio šablone pateikiama asmeninė rekomendacija vartotojui el. prekybos svetainėje. Pagal numatytuosius nustatymus jame yra tokių funkcijų, kaip prekių, kurių nėra sandėlyje, išskyrimas arba rekomendacijų teikimas naudotojui, kuris prisiregistruoja po to, kai modelis yra apmokytas. Be to, pagal numatytuosius nustatymus variklio šablonas peržiūri ir perka įvykius, elementus su kategorijomis ir ypatybėmis bei nepasiekiamų prekių sąrašą. Kai variklis bus išmokytas ir įdiegtas, galite išsiųsti užklausą su vartotojo ID ir rekomenduojamų elementų skaičiumi. Sugeneruota produkcija bus reitinguotas rekomenduojamų elementų ID sąrašas.

Įdiekite „Git“, nes jis bus naudojamas saugyklai klonuoti.

cd ~    
sudo yum -y install git

Sistemoje klonuokite E-Commerce Recommender variklio šabloną.

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

Sukurkite naują el. prekybos rekomendacijų šablonų variklio programą. Kiekviena PredictionIO programa naudojama atskiros svetainės duomenims saugoti. Jei turite kelias svetaines, galite sukurti kelias programas, kad kiekvienos svetainės duomenys būtų saugomi kitoje programoje. Galite laisvai pasirinkti bet kokį savo programos pavadinimą.

cd MyEComRecomm/
pio app new myecom

Pamatysite tokią išvestį.

[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

Aukščiau pateiktame išvestyje taip pat yra prieigos raktas, kuris bus naudojamas autentifikuoti siunčiant įvesties duomenis į įvykių serverį.

Prieigos raktą ir galimų programų sąrašą visada galite rasti paleisdami.

pio app list

Pamatysite šią išvestį, kurioje yra programų sąrašas ir prieigos raktas.

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

Dabar, kai sukūrėme naują programą, pridėsime prie jos kai kuriuos duomenis. Gamybos aplinkoje norite automatiškai siųsti duomenis į įvykių serverį, integruodami įvykių serverio API į programą. Norėdami sužinoti, kaip veikia „PredictionIO“, į jį importuosime keletą duomenų pavyzdžių. Šablonų variklis pateikia Python scenarijų, kurį galima lengvai naudoti pavyzdiniams duomenims importuoti į įvykių serverį.

Įdiekite Python pip.

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

Įdiekite PredictionIO Python SDK naudodami pip.

sudo pip install predictionio

Paleiskite Python scenarijų, kad įtrauktumėte pavyzdinius duomenis į įvykių serverį.

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

Būtinai pakeiskite prieigos raktą tikruoju prieigos raktu. Pamatysite panašų išvestį.

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

Aukščiau pateiktas scenarijus importuoja 10 vartotojų, 50 prekių 6 kategorijose ir kai kuriuos atsitiktinius pirkimo ir peržiūrų įvykius. Norėdami patikrinti, ar įvykiai importuoti, ar ne, galite paleisti šią užklausą.

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

Išvestis parodys visų importuotų įvykių sąrašą JSON formatu.

Dabar atidarykite engine.jsonfailą redaktoriuje. Šiame faile yra variklio konfigūracija.

nano engine.json

Raskite abu atvejus appNameir pakeiskite reikšmę tikruoju anksčiau sukurtos programos pavadinimu.

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

Sukurkite programą.

pio build --verbose

Jei nenorite matyti žurnalo pranešimų, pašalinkite --verboseparinktį. Variklio šablono kūrimas pirmą kartą užtruks kelias minutes. Pamatysite panašų išvestį, kai sėkmingai baigs kurti.

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

Treniruok variklį dabar. Mokymų metu variklis analizuoja duomenų rinkinį ir pats treniruojasi pagal pateiktą algoritmą.

pio train

Prieš diegdami programą, turėsime atidaryti prievadą 8000, kad programos būseną būtų galima peržiūrėti žiniatinklio GUI. Be to, svetainės ir programos, naudojantys įvykių serverį, siųs ir gaus savo užklausas per šį prievadą.

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

Dabar galite įdiegti „PredictionIO“ variklį.

pio deploy

Aukščiau pateikta komanda įdiegs variklį ir integruotą žiniatinklio serverį prie prievado, 8000kad atsakytų į el. prekybos svetainių ir programų užklausas. Sėkmingai įjungus variklį, pabaigoje pamatysite šią išvestį.

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

Galite patikrinti variklio būseną http://192.0.2.1:8000naudodami bet kurią šiuolaikinę naršyklę. Įsitikinkite, kad jį 192.0.2.1pakeitėte tikruoju Vultr IP adresu.

Tai reiškia, kad el. prekybos rekomendacijos variklio šablonas įdiegtas ir sėkmingai veikia. Galite pateikti variklio šablono užklausą, kad gautumėte penkias rekomendacijas vartotojui u5, vykdydami šią užklausą naujoje terminalo sesijoje.

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

Pamatysite sugeneruotas rekomendacijas vartotojui 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}]}

Apvyniojimas

Sveikiname, „Apache PredictionIO“ sėkmingai įdiegtas jūsų serveryje. Dabar galite naudoti įvykių serverio API duomenims importuoti į variklį ir numatyti rekomendacijas vartotojui. Jei norite, galite naudoti kitus šablonus iš šablonų galerijos. Būtinai peržiūrėkite Universal Recommender variklio šabloną, kuris gali būti naudojamas beveik visais naudojimo atvejais, įskaitant el. prekybą, naujienas ar vaizdo įrašus.


Įdiekite „Plesk“ „CentOS 7“.

Įdiekite „Plesk“ „CentOS 7“.

Naudojate kitą sistemą? Plesk yra patentuotas žiniatinklio prieglobos valdymo skydelis, leidžiantis vartotojams administruoti savo asmenines ir (arba) klientų svetaines, duomenų bazes

Kaip įdiegti „Squid“ tarpinį serverį „CentOS“.

Kaip įdiegti „Squid“ tarpinį serverį „CentOS“.

Squid yra populiari nemokama „Linux“ programa, leidžianti sukurti persiuntimo žiniatinklio tarpinį serverį. Šiame vadove pamatysite, kaip įdiegti „Squid“ „CentOS“, kad paverstumėte jus

Kaip įdiegti „Lighttpd“ (LLMP Stack) „CentOS 6“.

Kaip įdiegti „Lighttpd“ (LLMP Stack) „CentOS 6“.

Įvadas Lighttpd yra „Apache“ šakutė, skirta daug mažiau išteklių imti. Jis yra lengvas, todėl jo pavadinimas ir yra gana paprastas naudoti. Įdiegti

Statinio tinklo ir IPv6 konfigūravimas CentOS 7

Statinio tinklo ir IPv6 konfigūravimas CentOS 7

VULTR neseniai atliko pakeitimus, ir dabar viskas turėtų veikti gerai, kai įjungta „NetworkManager“. Jei norite išjungti

„Icinga2“ modifikavimas, kad būtų naudojamas pagrindinis / kliento modelis „CentOS 6“ arba „CentOS 7“.

„Icinga2“ modifikavimas, kad būtų naudojamas pagrindinis / kliento modelis „CentOS 6“ arba „CentOS 7“.

Icinga2 yra galinga stebėjimo sistema, o kai naudojama pagrindinio kliento modelyje, ji gali pakeisti NRPE pagrįstų stebėjimo patikrų poreikį. Meistras-klientas

Kaip įdiegti „Apache Cassandra 3.11.x“ „CentOS 7“.

Kaip įdiegti „Apache Cassandra 3.11.x“ „CentOS 7“.

Naudojate kitą sistemą? Apache Cassandra yra nemokama ir atviro kodo NoSQL duomenų bazių valdymo sistema, skirta užtikrinti mastelio keitimą, hig.

Kaip įdiegti „Mattermost 4.1“ „CentOS 7“.

Kaip įdiegti „Mattermost 4.1“ „CentOS 7“.

Naudojate kitą sistemą? Mattermost yra atvirojo kodo, savarankiškai priglobta alternatyva Slack SAAS pranešimų paslaugai. Kitaip tariant, naudodami Mattermost, jūs apytiksliai

Leidžia šifruoti Plesk

Leidžia šifruoti Plesk

„Plesk“ valdymo skydelyje yra labai graži „Lets Encrypt“ integracija. „Lets Encrypt“ yra vienas iš vienintelių SSL teikėjų, išduodančių visus sertifikatus

Leidžia šifruoti „cPanel“.

Leidžia šifruoti „cPanel“.

„Lets Encrypt“ yra sertifikatų institucija, skirta nemokamai teikti SSL sertifikatus. cPanel sukūrė tvarkingą integraciją, kad jūs ir jūsų klientas

Kaip įdiegti „Concrete5“ „CentOS 7“.

Kaip įdiegti „Concrete5“ „CentOS 7“.

Naudojate kitą sistemą? Concrete5 yra atvirojo kodo TVS, kuri siūlo daug išskirtinių ir naudingų funkcijų, padedančių redaktoriams lengvai sukurti turinį

Kaip įdiegti apžvalgos lentą „CentOS 7“.

Kaip įdiegti apžvalgos lentą „CentOS 7“.

Naudojate kitą sistemą? „Review Board“ yra nemokamas atvirojo kodo įrankis, skirtas šaltinio kodui, dokumentacijai, vaizdams ir daugeliui kitų peržiūrėti. Tai internetinė programinė įranga

Nustatykite HTTP autentifikavimą naudodami „Nginx“ „CentOS 7“.

Nustatykite HTTP autentifikavimą naudodami „Nginx“ „CentOS 7“.

Šiame vadove sužinosite, kaip nustatyti HTTP autentifikavimą Nginx žiniatinklio serveriui, kuriame veikia CentOS 7. Reikalavimai Norėdami pradėti, jums reikės

Kaip įdiegti YOURLS „CentOS 7“.

Kaip įdiegti YOURLS „CentOS 7“.

YOURLS (Your Own URL Shortener) yra atvirojo kodo URL sutrumpinimo ir duomenų analizės programa. Šiame straipsnyje apžvelgsime diegimo procesą

Kaip įdiegti ir konfigūruoti „ArangoDB“ „CentOS 7“.

Kaip įdiegti ir konfigūruoti „ArangoDB“ „CentOS 7“.

Naudojate kitą sistemą? Įvadas ArangoDB yra atvirojo kodo NoSQL duomenų bazė su lanksčiu duomenų modeliu dokumentams, grafikams ir raktų reikšmėms. tai yra

Etckeeper naudojimas versijai valdyti /etc

Etckeeper naudojimas versijai valdyti /etc

Įvadas Katalogas /etc/ vaidina lemiamą vaidmenį veikiant Linux sistemai. Taip yra todėl, kad beveik visos sistemos konfigūracijos

Kodėl turėtumėte naudoti SSHFS? Kaip prijungti nuotolinę failų sistemą su SSHFS „CentOS 6“.

Kodėl turėtumėte naudoti SSHFS? Kaip prijungti nuotolinę failų sistemą su SSHFS „CentOS 6“.

Daugelis sistemos administratorių valdo didelius serverių kiekius. Kai failus reikia pasiekti skirtinguose serveriuose, prisijungiant prie kiekvieno atskirai apytiksliai

„Half Life 2“ serverio nustatymas „CentOS 6“.

„Half Life 2“ serverio nustatymas „CentOS 6“.

Ši pamoka apims Half Life 2 žaidimų serverio diegimą CentOS 6 sistemoje. 1 veiksmas: būtinų sąlygų įdiegimas Norėdami nustatyti ou

Kaip įdiegti „Laravel GitScrum“ „CentOS 7“.

Kaip įdiegti „Laravel GitScrum“ „CentOS 7“.

Laravel GitScrum arba GitScrum yra atvirojo kodo produktyvumo įrankis, skirtas padėti kūrimo komandoms įgyvendinti Scrum metodiką panašiai

Kaip įdiegti „PowerDNS“ „CentOS“.

Kaip įdiegti „PowerDNS“ „CentOS“.

Įvadas Šiame „Vultr“ vadove sužinosite, kaip įdiegti „PowerDNS“. PowerDNS yra programa, skirta paleisti savo vardų serverius. Tai labai naudinga, kai

Įdiekite „Wordpress“ naudodami „Apache“, PHP ir „MySQL“ (automatinis paleisties scenarijus)

Įdiekite „Wordpress“ naudodami „Apache“, PHP ir „MySQL“ (automatinis paleisties scenarijus)

Galite nukopijuoti ir įklijuoti šį bash scenarijų į Vultr valdymo skydelio paleisties scenarijaus sritį. Jis įdiegs visus reikalingus paketus į ru

Mašinų augimas: AI pritaikymas realiame pasaulyje

Mašinų augimas: AI pritaikymas realiame pasaulyje

Dirbtinis intelektas nėra ateityje, jis čia, dabartyje Šiame tinklaraštyje Skaitykite, kaip dirbtinio intelekto programos paveikė įvairius sektorius.

DDOS atakos: trumpa apžvalga

DDOS atakos: trumpa apžvalga

Ar taip pat esate DDOS atakų auka ir esate sumišęs dėl prevencijos metodų? Perskaitykite šį straipsnį, kad išspręstumėte savo užklausas.

Ar kada nors susimąstėte, kaip įsilaužėliai uždirba pinigų?

Ar kada nors susimąstėte, kaip įsilaužėliai uždirba pinigų?

Galbūt girdėjote, kad įsilaužėliai uždirba daug pinigų, bet ar kada susimąstėte, kaip jie uždirba tokius pinigus? padiskutuokime.

Revoliuciniai „Google“ išradimai, kurie palengvins jūsų gyvenimą.

Revoliuciniai „Google“ išradimai, kurie palengvins jūsų gyvenimą.

Ar norite pamatyti revoliucinius „Google“ išradimus ir kaip šie išradimai pakeitė kiekvieno žmogaus gyvenimą šiandien? Tada skaitykite tinklaraštį, kad pamatytumėte „Google“ išradimus.

Penktadienio esminiai dalykai: kas atsitiko AI varomiems automobiliams?

Penktadienio esminiai dalykai: kas atsitiko AI varomiems automobiliams?

Savavaledžių automobilių koncepcija, kuri išvažiuotų į kelius su dirbtinio intelekto pagalba, yra svajonė, kurią jau kurį laiką svajojame. Tačiau nepaisant kelių pažadų, jų niekur nematyti. Skaitykite šį tinklaraštį, kad sužinotumėte daugiau…

Technologinis išskirtinumas: tolima žmogaus civilizacijos ateitis?

Technologinis išskirtinumas: tolima žmogaus civilizacijos ateitis?

Kadangi mokslas sparčiai vystosi, perimdamas daug mūsų pastangų, taip pat didėja rizika, kad pateksime į nepaaiškinamą singuliarumą. Skaitykite, ką mums gali reikšti išskirtinumas.

Duomenų saugojimo raida – infografika

Duomenų saugojimo raida – infografika

Duomenų saugojimo metodai gali būti tobulinami nuo pat Duomenų gimimo. Šiame tinklaraštyje, remiantis infografika, aprašoma duomenų saugojimo raida.

Didžiųjų duomenų atskaitos architektūros sluoksnių funkcijos

Didžiųjų duomenų atskaitos architektūros sluoksnių funkcijos

Skaitykite tinklaraštį, kad paprasčiausiai sužinotumėte apie skirtingus didžiųjų duomenų architektūros sluoksnius ir jų funkcijas.

6 nuostabūs išmaniųjų namų įrenginių privalumai

6 nuostabūs išmaniųjų namų įrenginių privalumai

Šiame skaitmeniniu būdu pagrįstame pasaulyje išmanieji namų įrenginiai tapo svarbia gyvenimo dalimi. Štai keletas nuostabių išmaniųjų namų įrenginių privalumų, kaip jie daro mūsų gyvenimą vertą gyventi ir paprastesnį.

„macOS Catalina 10.15.4“ priedo atnaujinimas kelia daugiau problemų, nei sprendžia

„macOS Catalina 10.15.4“ priedo atnaujinimas kelia daugiau problemų, nei sprendžia

Neseniai „Apple“ išleido „macOS Catalina 10.15.4“ priedą, skirtą problemoms išspręsti, tačiau atrodo, kad dėl atnaujinimo kyla daugiau problemų, dėl kurių „Mac“ įrenginiai blokuojami. Norėdami sužinoti daugiau, perskaitykite šį straipsnį