Cara Memasang dan Menggunakan Apache PredictionIO untuk Pembelajaran Mesin di CentOS 7

Pendekatan tradisional untuk analisis data tidak mungkin digunakan apabila set data mencapai ukuran tertentu. Alternatif moden untuk menganalisis kumpulan data yang besar adalah menggunakan kaedah pembelajaran mesin. Pembelajaran mesin dapat menghasilkan hasil yang tepat apabila menggunakan algoritma yang pantas dan cekap.

Apache PredictionIO adalah pelayan pembelajaran mesin sumber terbuka yang digunakan untuk membuat mesin ramalan untuk setiap tugas pembelajaran mesin. Ini memendekkan waktu aplikasi pembelajaran mesin dari makmal ke produksi dengan menggunakan templat mesin yang dapat disesuaikan dan dapat dibangun dan digunakan dengan cepat. Ini menyediakan pengumpulan data dan komponen penyampaian, dan abstrak teknologi yang mendasari untuk mendedahkan API yang membolehkan pemaju fokus pada komponen transformasi. Setelah pelayan mesin PredictionIO digunakan sebagai perkhidmatan web, ia dapat menanggapi pertanyaan dinamik dalam masa nyata.

Apache PredictionIO terdiri daripada komponen yang berbeza.

  • Platform PredictionIO : Tumpukan pembelajaran mesin sumber terbuka yang dibina di bahagian atas beberapa aplikasi sumber terbuka yang canggih seperti Apache Spark, Apache Hadoop, Apache HBase dan Elasticsearch.
  • Pelayan Peristiwa : Ini terus mengumpulkan data dari pelayan web atau pelayan aplikasi mudah alih anda dalam mod masa nyata atau mod kumpulan. Data yang dikumpulkan dapat digunakan untuk melatih mesin atau untuk memberikan pandangan terpadu untuk analisis data. Pelayan acara menggunakan Apache HBase untuk menyimpan data.
  • Server Pelayan : Pelayan mesin bertanggungjawab membuat ramalan sebenar. Ia membaca data latihan dari penyimpanan data dan menggunakan satu atau lebih algoritma pembelajaran mesin untuk membina model ramalan. Mesin, yang pernah digunakan sebagai perkhidmatan web, bertindak balas terhadap pertanyaan yang dibuat oleh web atau aplikasi mudah alih menggunakan REST API atau SDK.
  • Galeri Templat : Galeri ini menawarkan pelbagai jenis templat enjin yang telah dibina sebelumnya. Anda boleh memilih templat yang serupa dengan kes penggunaan anda dan mengubahnya mengikut keperluan anda.

Prasyarat

  • Contoh pelayan Vultr CentOS 7 dengan RAM sekurang-kurangnya 8GB. Untuk tujuan pengujian dan pengembangan, anda dapat memilih contoh dengan RAM 4GB dan memori pertukaran 4GB yang lain .
  • Pengguna sudo .

Dalam tutorial ini, kami akan menggunakan 192.0.2.1sebagai alamat IP awam pelayan. Ganti semua kejadian 192.0.2.1dengan alamat IP awam Vultr anda.

Kemas kini sistem asas anda menggunakan panduan Cara Mengemas kini CentOS 7 . Apabila sistem anda telah dikemas kini, teruskan untuk memasang Java.

Pasang Java

Sebilangan besar komponen PredictionIO memerlukan JDK, atau Java Development Kit, versi 8 untuk berfungsi. Ia menyokong OpenJDK dan Oracle Java. Dalam tutorial ini, kami akan memasang OpenJDK versi 8.

OpenJDK dapat dipasang dengan mudah, kerana pakej ini tersedia di repositori YUM lalai.

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

Sahkan versi Java untuk memastikan ia dipasang dengan betul.

java -version

Anda akan mendapat output yang serupa.

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

Sebelum kita dapat melangkah lebih jauh, kita perlu mengatur pemboleh ubah JAVA_HOMEdan JRE_HOMEpersekitaran. Cari laluan mutlak JAVA yang dapat dilaksanakan dalam sistem anda.

readlink -f $(which java)

Anda akan melihat output yang serupa.

[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

Sekarang, set JAVA_HOMEdan JRE_HOMEpemboleh ubah persekitaran mengikut jalan direktori 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

Jalankan bash_profilefail.

source ~/.bash_profile

Sekarang anda boleh menjalankan echo $JAVA_HOMEperintah untuk memeriksa apakah pemboleh ubah persekitaran ditetapkan.

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

Pasang PredictionIO

Apache menyediakan fail sumber PredictionIO yang boleh dimuat turun dan disusun secara tempatan. Buat direktori sementara baru untuk memuat turun dan menyusun fail sumber.

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

Muat turun arkib fail sumber PredictionIO menggunakan mana-mana laman Apache Mirror .

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

Ekstrak arkib dan susun sumbernya untuk membuat sebaran PredictionIO.

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

Pengagihan di atas akan dibina terhadap versi lalai daripada kebergantungan, yang Scala 2.11.8, Spark 2.1.1, Hadoop 2.7.3dan ElasticSearch 5.5.2. Tunggu hingga pembinaan selesai, akan memakan masa sekitar sepuluh minit untuk diselesaikan bergantung pada prestasi sistem anda.

Catatan : Anda bebas menggunakan versi kebergantungan terbaru yang disokong, tetapi anda mungkin melihat beberapa amaran semasa pembuatan kerana beberapa fungsi mungkin tidak digunakan lagi. Jalankan ./make-distribution.sh -Dscala.version=2.11.11 -Dspark.version=2.1.2 -Dhadoop.version=2.7.4 -Delasticsearch.version=5.5.3, ganti nombor versi mengikut pilihan anda.

Setelah binaan berjaya diselesaikan, anda akan melihat mesej berikut di akhir.

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

Fail perduaan PredictionIO akan disimpan dalam PredictionIO-0.12.0-incubating.tar.gzarkib. Ekstrak arkib dalam /optdirektori dan berikan hak milik kepada pengguna semasa.

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

Tetapkan PIO_HOMEpemboleh ubah persekitaran.

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

Pasang Tanggungan yang Diperlukan

Buat direktori baru untuk memasang pergantungan PredictionIO seperti HBase, Sparkdan Elasticsearch.

mkdir /opt/PredictionIO-0.12.0-incubating/vendors

Muat turun Scala versi 2.11.8 dan ekstrak ke dalam vendorsdirektori.

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

Muat turun Apache Hadoop versi 2.7.3 dan ekstrak ke dalam vendorsdirektori.

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 adalah mesin pemprosesan lalai untuk PredictionIO. Muat turun Spark versi 2.1.1 dan ekstrak ke dalam vendorsdirektori.

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

Muat turun Elasticsearch versi 5.5.2 dan ekstrak ke dalam vendorsdirektori.

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

Akhirnya, muat turun HBase versi 1.2.6 dan ekstrak ke dalam vendorsdirektori.

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

Buka hbase-site.xmlfail konfigurasi untuk mengkonfigurasi HBase agar berfungsi dalam persekitaran yang berdiri sendiri.

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

Cari blok konfigurasi yang kosong dan gantikan dengan konfigurasi berikut.

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

Direktori data akan dibuat secara automatik oleh HBase. Edit fail persekitaran HBase untuk menetapkan JAVA_HOMEjalan.

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

Uncomment line number 27 dan tetapkan JAVA_HOMEke jalan jre, pemasangan Java anda. Anda boleh mencari jalan ke JAVA yang boleh dilaksanakan menggunakan readlink -f $(which java)arahan.

# 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

Juga, komen nombor baris 46 dan 47 kerana ia tidak diperlukan untuk 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"

Konfigurasikan PredictionIO Environment

Konfigurasi lalai dalam fail persekitaran PredictionIO pio-env.shmengandaikan bahawa kita menggunakan PostgreSQL atau MySQL. Oleh kerana kami telah menggunakan HBase dan Elasticsearch, kami perlu mengubah hampir setiap konfigurasi dalam fail. Sebaiknya ambil sandaran fail yang ada dan buat fail persekitaran PredictionIO baru.

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

Sekarang buat fail baru untuk konfigurasi persekitaran PredictionIO.

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

Tandakan fail dengan konfigurasi berikut.

# 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

Simpan fail dan keluar dari editor.

Buka fail konfigurasi Elasticsearch.

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

Tanggalkan baris dan tetapkan nama kluster agar sama dengan yang disediakan dalam fail persekitaran PredictionIO. Nama kluster ditetapkan piodalam konfigurasi di atas.

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

Sekarang tambahkan $PIO_HOME/bindirektori ke dalam pemboleh ubah PATH sehingga pelaksanaan PredictionIO dijalankan secara langsung.

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

Pada ketika ini, PredictionIO berjaya dipasang di pelayan anda.

Memulakan PrediksiIO

Anda boleh memulakan semua perkhidmatan di PredictionIO seperti pelayan Elasticsearch, HBase dan Event menggunakan satu arahan.

pio-start-all

Anda akan melihat output berikut.

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

Gunakan arahan berikut untuk memeriksa status pelayan PredictionIO.

pio status

Anda akan melihat output berikut.

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

Seperti yang dapat kita lihat dalam pesan di atas, sistem kita siap digunakan untuk menerapkan templat mesin dan memprediksi data.

Melaksanakan Templat Enjin

Beberapa templat enjin yang siap digunakan terdapat di Galeri Templat PredictionIO yang boleh dipasang dengan mudah di pelayan PredictionIO. Anda bebas untuk melihat senarai templat enjin untuk mencari yang sesuai dengan keperluan anda atau anda boleh menulis mesin anda sendiri.

Dalam tutorial ini, kami akan menerapkan E-Commerce Recommendationtemplat enjin untuk menunjukkan fungsi pelayan PredictionIO menggunakan beberapa contoh data. Templat enjin ini memberikan beberapa cadangan peribadi kepada pengguna di laman web e-dagang. Secara lalai, ia mempunyai ciri seperti mengecualikan item stok atau memberi cadangan kepada pengguna yang mendaftar setelah model dilatih. Juga, secara lalai, templat mesin mengambil pandangan pengguna dan membeli acara, item dengan kategori dan sifat dan senarai item yang tidak tersedia. Setelah mesin dilatih dan digunakan, anda dapat mengirim pertanyaan dengan id pengguna dan jumlah item yang akan disyorkan. Output yang dihasilkan akan menjadi senarai peringkat id item yang disyorkan.

Pasang Git, kerana ia akan digunakan untuk mengklon repositori.

cd ~    
sudo yum -y install git

Klon templat mesin E-Commerce Recommender pada sistem anda.

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

Buat aplikasi baru untuk mesin templat E-Commerce Recommendation. Setiap aplikasi di PredictionIO digunakan untuk menyimpan data untuk laman web yang terpisah. Sekiranya anda mempunyai banyak laman web, maka anda boleh membuat beberapa aplikasi untuk menyimpan data setiap laman web ke dalam aplikasi yang berbeza. Anda bebas memilih mana-mana nama untuk aplikasi anda.

cd MyEComRecomm/
pio app new myecom

Anda akan melihat output berikut.

[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

Output di atas juga mengandungi kunci akses yang akan digunakan untuk mengesahkan ketika mengirim data input ke pelayan acara.

Anda sentiasa dapat mencari kunci akses bersama dengan senarai aplikasi yang tersedia dengan menjalankan.

pio app list

Anda akan melihat output berikut yang mengandungi senarai aplikasi dan kunci akses.

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

Sekarang kami telah membuat aplikasi baru, kami akan menambahkan beberapa data padanya. Dalam lingkungan produksi, anda ingin mengirim data ke pelayan acara secara otomatis dengan mengintegrasikan API pelayan acara ke dalam aplikasi. Untuk mengetahui bagaimana PredictionIO berfungsi, kami akan mengimport beberapa sampel data ke dalamnya. Mesin templat menyediakan skrip Python yang dapat dengan mudah digunakan untuk mengimport data sampel ke pelayan acara.

Pasang Python pip.

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

Pasang PredictionIO Python SDK menggunakan pip.

sudo pip install predictionio

Jalankan skrip Python untuk menambahkan data sampel ke pelayan acara.

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

Pastikan untuk mengganti kunci akses dengan kunci akses sebenar anda. Anda akan melihat output yang serupa.

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

Skrip di atas mengimport 10 pengguna, 50 item dalam 6 kategori dan beberapa acara pembelian dan pandangan secara rawak. Untuk memeriksa sama ada peristiwa diimport atau tidak, anda boleh menjalankan pertanyaan berikut.

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

Hasilnya akan menunjukkan kepada anda senarai semua peristiwa yang diimport dalam format JSON.

Sekarang, buka engine.jsonfail ke editor. Fail ini mengandungi konfigurasi enjin.

nano engine.json

Cari kedua kejadian appNamedan ganti nilainya dengan nama sebenar aplikasi yang telah anda buat sebelumnya.

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

Bina aplikasi.

pio build --verbose

Sekiranya anda tidak mahu melihat mesej log, hapus --verbosepilihannya. Membina templat enjin untuk pertama kalinya akan memakan masa beberapa minit. Anda akan melihat output yang serupa apabila binaan berjaya diselesaikan.

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

Latih enjin sekarang. Semasa latihan, mesin menganalisis set data dan melatihnya sendiri mengikut algoritma yang disediakan.

pio train

Sebelum menyebarkan aplikasi, kita perlu membuka port 8000agar status aplikasi dapat dilihat di Web GUI. Juga, laman web dan aplikasi yang menggunakan pelayan acara akan menghantar dan menerima pertanyaan mereka melalui port ini.

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

Sekarang anda boleh menggunakan enjin PredictionIO.

pio deploy

Perintah di atas akan menggunakan enjin dan pelayan web terpasang di port 8000untuk menjawab pertanyaan dari laman web dan aplikasi e-dagang. Anda akan melihat output berikut pada akhir apabila enjin berjaya digunakan.

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

Anda boleh mengesahkan status enjin dengan http://192.0.2.1:8000menggunakan penyemak imbas moden. Pastikan anda mengganti 192.0.2.1dengan alamat IP Vultr sebenar anda.

Ini menandakan bahawa templat mesin untuk cadangan E-Commerce berjaya dan berjaya dijalankan. Anda boleh meminta templat mesin untuk mengambil lima cadangan untuk pengguna u5dengan menjalankan pertanyaan berikut dalam sesi terminal baru.

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

Anda akan melihat cadangan yang dihasilkan untuk pengguna 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}]}

Mengakhiri

Tahniah, Apache PredictionIO berjaya disebarkan di pelayan anda. Anda kini boleh menggunakan API pelayan acara untuk mengimport data ke dalam mesin untuk meramalkan cadangan untuk pengguna. Sekiranya anda mahu, anda boleh menggunakan beberapa templat lain dari galeri templat. Pastikan anda melihat templat enjin Pencadangkan Sejagat yang boleh digunakan dalam hampir semua kes penggunaan termasuk e-dagang, berita atau video.



Leave a Comment

Pandangan tentang 26 Teknik Analisis Data Besar: Bahagian 1

Pandangan tentang 26 Teknik Analisis Data Besar: Bahagian 1

Pandangan tentang 26 Teknik Analisis Data Besar: Bahagian 1

6 Perkara Yang Sangat Menggila Tentang Nintendo Switch

6 Perkara Yang Sangat Menggila Tentang Nintendo Switch

Ramai daripada anda tahu Switch akan keluar pada Mac 2017 dan ciri baharunya. Bagi yang tidak tahu, kami telah menyediakan senarai ciri yang menjadikan 'Tukar' sebagai 'gajet yang mesti ada'.

Janji Teknologi Yang Masih Tidak Ditepati

Janji Teknologi Yang Masih Tidak Ditepati

Adakah anda menunggu gergasi teknologi memenuhi janji mereka? semak apa yang masih belum dihantar.

Fungsi Lapisan Seni Bina Rujukan Data Besar

Fungsi Lapisan Seni Bina Rujukan Data Besar

Baca blog untuk mengetahui lapisan berbeza dalam Seni Bina Data Besar dan fungsinya dengan cara yang paling mudah.

Bagaimana AI Boleh Mengambil Automasi Proses ke Tahap Seterusnya?

Bagaimana AI Boleh Mengambil Automasi Proses ke Tahap Seterusnya?

Baca ini untuk mengetahui cara Kecerdasan Buatan semakin popular di kalangan syarikat berskala kecil dan cara ia meningkatkan kebarangkalian untuk menjadikan mereka berkembang dan memberikan pesaing mereka kelebihan.

CAPTCHA: Berapa Lama Ia Boleh Kekal Sebagai Teknik Berdaya maju Untuk Perbezaan Manusia-AI?

CAPTCHA: Berapa Lama Ia Boleh Kekal Sebagai Teknik Berdaya maju Untuk Perbezaan Manusia-AI?

CAPTCHA telah menjadi agak sukar untuk diselesaikan oleh pengguna dalam beberapa tahun kebelakangan ini. Adakah ia dapat kekal berkesan dalam pengesanan spam dan bot pada masa hadapan?

Keunikan Teknologi: Masa Depan Tamadun Manusia yang Jauh?

Keunikan Teknologi: Masa Depan Tamadun Manusia yang Jauh?

Apabila Sains Berkembang pada kadar yang pantas, mengambil alih banyak usaha kita, risiko untuk menundukkan diri kita kepada Ketunggalan yang tidak dapat dijelaskan juga meningkat. Baca, apakah makna ketunggalan bagi kita.

Teleperubatan Dan Penjagaan Kesihatan Jauh: Masa Depan Ada Di Sini

Teleperubatan Dan Penjagaan Kesihatan Jauh: Masa Depan Ada Di Sini

Apakah teleperubatan, penjagaan kesihatan jauh dan impaknya kepada generasi akan datang? Adakah ia tempat yang baik atau tidak dalam situasi pandemik? Baca blog untuk mencari paparan!

Pernahkah Anda Terfikir Bagaimana Penggodam Mendapatkan Wang?

Pernahkah Anda Terfikir Bagaimana Penggodam Mendapatkan Wang?

Anda mungkin pernah mendengar bahawa penggodam memperoleh banyak wang, tetapi pernahkah anda terfikir bagaimana mereka memperoleh wang seperti itu? Mari berbincang.

Kemas Kini Tambahan macOS Catalina 10.15.4 Menyebabkan Lebih Banyak Isu Daripada Penyelesaian

Kemas Kini Tambahan macOS Catalina 10.15.4 Menyebabkan Lebih Banyak Isu Daripada Penyelesaian

Baru-baru ini Apple mengeluarkan macOS Catalina 10.15.4 kemas kini tambahan untuk menyelesaikan masalah tetapi nampaknya kemas kini itu menyebabkan lebih banyak masalah yang membawa kepada pemusnahan mesin mac. Baca artikel ini untuk mengetahui lebih lanjut