نحوه نصب و استفاده از Apache PredictionIO برای یادگیری ماشین در CentOS 7

در صورت دستیابی به مجموعه دادههای داده به اندازه خاصی ، روشهای سنتی برای تجزیه و تحلیل دادهها غیرممکن است. یک جایگزین مدرن برای تجزیه و تحلیل مجموعه های عظیم داده ها ، استفاده از روش های یادگیری ماشین است. یادگیری ماشین در هنگام استفاده از الگوریتم سریع و کارآمد قادر به تولید نتایج دقیق است.

Apache PredictionIO یک سرور یادگیری ماشین منبع باز است که برای ایجاد موتورهای پیش بینی برای هر کار یادگیری ماشین استفاده می شود. با استفاده از قالب های قابل تنظیم موتور که می توان به سرعت ساخته و مستقر شد ، زمان کاربرد یادگیری ماشین را از آزمایشگاه به تولید کوتاه می کند. این مجموعه داده ها و مؤلفه های ارائه دهنده و انتزاعات فن آوری زمینه ای را برای افشای API فراهم می کند که به توسعه دهندگان امکان می دهد تا روی اجزای تحول متمرکز شوند. هنگامی که سرور موتور PredictionIO به عنوان یک سرویس وب مستقر شد ، می تواند در زمان واقعی به سؤالات پویا پاسخ دهد.

پیش بینی آپاچی از مؤلفه های مختلفی تشکیل شده است.

  • PredictionIO Platform : یک پشته یادگیری ماشین منبع باز که در بالای برخی از برنامه های پیشرفته منبع باز مانند Apache Spark ، Apache Hadoop ، Apache HBase و Elasticsearch ساخته شده است.
  • رویداد سرور : این به طور مداوم داده ها را از سرور وب یا سرور برنامه تلفن همراه شما در حالت زمان واقعی یا حالت دسته ای جمع می کند. از داده های جمع آوری شده می توان برای آموزش موتور یا تهیه دیدگاه یکپارچه برای تجزیه و تحلیل داده ها استفاده کرد. سرور رویداد از Apache HBase برای ذخیره داده ها استفاده می کند.
  • موتور سرور : سرور موتور وظیفه تهیه پیش بینی واقعی را دارد. این داده های آموزش را از فروشگاه داده می خواند و از یک یا چند الگوریتم یادگیری ماشین برای ساخت مدل های پیش بینی استفاده می کند. یک موتور ، هنگامی که به عنوان یک سرویس وب مستقر شده است ، به نمایش داده شده توسط یک برنامه وب یا تلفن همراه با استفاده از REST API یا SDK پاسخ می دهد.
  • گالری قالب : این گالری انواع مختلفی از قالب های پیش ساخته موتور را ارائه می دهد. می توانید الگویی را انتخاب کنید که مشابه مورد استفاده شما باشد و طبق نیاز خود آن را اصلاح کنید.

پیش نیازها

در این آموزش ، ما به 192.0.2.1عنوان آدرس IP عمومی سرور استفاده خواهیم کرد. تمام وقایع را 192.0.2.1با آدرس IP عمومی Vultr خود جایگزین کنید.

سیستم پایه خود را با استفاده از راهنمای نحوه به روزرسانی CentOS 7 به روز کنید . پس از به روزرسانی سیستم ، جاوا را نصب کنید.

جاوا را نصب کنید

بسیاری از مؤلفه های PredictionIO برای کار به JDK یا جاوا توسعه کیت ، نسخه 8 نیاز دارند. این نرم افزار از OpenJDK و Oracle Java پشتیبانی می کند. در این آموزش OpenJDK نسخه 8 را نصب خواهیم کرد.

OpenJDK را می توان به راحتی نصب کرد ، زیرا این بسته در مخزن پیش فرض YUM موجود است.

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

برای اطمینان از نصب صحیح نسخه Java ، آن را تأیید کنید.

java -version

شما یک خروجی مشابه دریافت خواهید کرد.

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

قبل از اینکه بتوانیم بیشتر پیش برویم ، باید متغیرهای محیط JAVA_HOMEو JRE_HOMEمحیط را تنظیم کنیم. مسیر مطلق JAVA اجرایی را در سیستم خود بیابید.

readlink -f $(which java)

یک خروجی مشابه را خواهید دید.

[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

اکنون ، متناسب با مسیر دایرکتوری جاوا ، متغیر JAVA_HOMEو JRE_HOMEمحیط را تنظیم کنید .

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

bash_profileپرونده را اجرا کنید.

source ~/.bash_profile

اکنون می توانید echo $JAVA_HOMEدستور را اجرا کنید تا بررسی کنید متغیر محیط تنظیم شده است یا خیر.

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

PredictionIO را نصب کنید

Apache فایلهای منبع PredictionIO را فراهم می کند که می توانند بصورت محلی بارگیری و کامپایل شوند. برای بارگیری و کامپایل کردن فایل منبع ، یک دایرکتوری موقت جدید ایجاد کنید.

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

با استفاده از هر سایت Apache Mirror ، بایگانی منبع منبع PredictionIO را بارگیری کنید .

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

بایگانی بایگانی را استخراج کرده و منبع را گردآوری کنید تا توزیع PredictionIO ایجاد شود.

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

توزیع بالا خواهد بود در برابر نسخه های پیش فرض از وابستگی، که ساخته شده است Scala 2.11.8، Spark 2.1.1، Hadoop 2.7.3و ElasticSearch 5.5.2. صبر کنید تا ساخت به پایان برسد ، بسته به عملکرد سیستم شما حدوداً ده دقیقه زمان خواهد برد.

توجه : شما می توانید از آخرین نسخه پشتیبانی شده وابسته ها استفاده کنید ، اما ممکن است برخی از هشدارها را در طول ساخت مشاهده کنید زیرا ممکن است برخی از توابع از بین بروند. اجرا کنید ./make-distribution.sh -Dscala.version=2.11.11 -Dspark.version=2.1.2 -Dhadoop.version=2.7.4 -Delasticsearch.version=5.5.3، با توجه به انتخاب خود شماره نسخه را جایگزین کنید.

پس از اتمام ساخت با موفقیت ، پیام زیر را در انتها مشاهده خواهید کرد.

...
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 در PredictionIO-0.12.0-incubating.tar.gzبایگانی ذخیره می شوند . بایگانی را در /optدایرکتوری استخراج کرده و مالکیت را در اختیار کاربر فعلی قرار دهید.

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

PIO_HOMEمتغیر محیط را تنظیم کنید .

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

وابستگی های مورد نیاز را نصب کنید

یک دایرکتوری جدید برای نصب وابستگیهای PredictionIO مانند HBase، Sparkو Elasticsearch.

mkdir /opt/PredictionIO-0.12.0-incubating/vendors

Scala نسخه 2.11.8 را بارگیری کنید و آن را در vendorsفهرست قرار دهید.

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

Apache Hadoop نسخه 2.7.3 را بارگیری کنید و آن را در vendorsفهرست قرار دهید.

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 موتور پردازش پیش فرض برای PredictionIO است. نسخه Spark 2.1.1 را بارگیری کنید و آن را درون vendorsفهرست قرار دهید.

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

Elasticsearch نسخه 5.5.2 را بارگیری کرده و آن را در vendorsفهرست قرار دهید.

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

در آخر ، نسخه HBase 1.2.6 را بارگیری کنید و آن را در vendorsفهرست قرار دهید.

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

باز کردن hbase-site.xmlفایل پیکربندی به پیکربندی HBase به کار در یک محیط مستقل.

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

بلوک تنظیمات خالی را پیدا کنید و آن را با پیکربندی زیر جایگزین کنید.

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

دایرکتوری داده به طور خودکار توسط HBase ایجاد می شود. برای تنظیم JAVA_HOMEمسیر ، فایل محیط HBase را ویرایش کنید .

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

خط Uncomment شماره 27 و نصب شده JAVA_HOMEروی مسیر jre، نصب جاوا است. با استفاده از readlink -f $(which java)دستور می توانید مسیر اجرایی JAVA را پیدا کنید .

# 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

همچنین ، شماره های 46 و 47 را به دلیل اینکه برای 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"

محیط پیش بینی را پیکربندی کنید

پیکربندی پیش فرض در پرونده محیط PredictionIO pio-env.shفرض می کند که ما از PostgreSQL یا MySQL استفاده می کنیم. از آنجا که از HBase و Elasticsearch استفاده کرده ایم ، تقریباً باید هر پیکربندی موجود در پرونده را تغییر دهیم. بهتر است از فایل موجود نسخه پشتیبان تهیه کنید و یک پرونده جدید محیط PredictionIO ایجاد کنید.

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

اکنون یک فایل جدید برای پیکربندی محیط PredictionIO ایجاد کنید.

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

پرونده را با پیکربندی زیر جمع کنید.

# 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

پرونده را ذخیره کرده و از ویرایشگر خارج شوید.

پرونده پیکربندی Elasticsearch را باز کنید.

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

خط را لغو خط کنید و نام خوشه را دقیقاً مشابه آنچه در پرونده محیط PredictionIO ارائه شده است تنظیم کنید. نام خوشه pioدر پیکربندی فوق تنظیم شده است.

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

اکنون $PIO_HOME/binدایرکتوری را به متغیر PATH اضافه کنید تا اجرایی PredictionIO بطور مستقیم اجرا شود.

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

در این مرحله ، PredictionIO با موفقیت روی سرور شما نصب می شود.

شروع پیش بینی

شما می توانید با استفاده از یک فرمان واحد ، کلیه خدمات را در PredictionIO مانند Elasticsearch ، HBase و Event سرور شروع کنید.

pio-start-all

خروجی زیر را مشاهده خواهید کرد.

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

برای بررسی وضعیت سرور PredictionIO از دستور زیر استفاده کنید.

pio status

خروجی زیر را مشاهده خواهید کرد.

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

همانطور که در پیام های فوق می بینیم ، سیستم ما آماده استفاده برای اجرای الگوی موتور و پیش بینی داده ها است.

پیاده سازی یک الگوی موتور

چندین نمونه آماده برای استفاده از موتور در گالری الگوهای پیش بینی موجود است که به راحتی بر روی سرور PredictionIO قابل نصب است. شما می توانید در فهرست الگوهای موتور جستجو کنید تا بتوانید مطلبی را پیدا کنید که به نیاز شما نزدیک باشد یا می توانید موتور خود را بنویسید.

در این آموزش ، ما E-Commerce Recommendationالگوی موتور را به نمایش می گذاریم تا عملکرد سرور PredictionIO را با استفاده از برخی داده های نمونه نشان دهد. این الگوی موتور توصیه های شخصی را در وب سایت تجارت الکترونیکی به کاربر ارائه می دهد. به طور پیش فرض ، دارای ویژگی هایی از قبیل خارج کردن موارد موجودی سهام یا ارائه توصیه هایی به کاربر است که پس از آموزش مدل ثبت نام می کند. همچنین به طور پیش فرض ، قالب موتور نمای کاربر را می گیرد و رویدادها ، کالاهایی را با دسته ها و خصوصیات و لیست موارد غیر قابل دسترسی خریداری می کند. پس از آموزش و استقرار موتور ، می توانید با شناسه کاربری و تعداد موارد مورد نظر ، پرس و جو ارسال کنید. خروجی تولید شده لیستی از آیدیهای مورد توصیه شده است.

Git را نصب کنید ، زیرا برای کلون کردن مخزن استفاده خواهد شد.

cd ~    
sudo yum -y install git

قالب موتور پیشنهادی تجارت الکترونیکی را در سیستم خود کلون کنید.

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

یک برنامه جدید برای موتور الگوی تجارت الکترونیکی ایجاد کنید. هر برنامه در PredictionIO برای ذخیره داده ها برای یک وب سایت جداگانه استفاده می شود. اگر چندین وب سایت دارید ، می توانید چندین برنامه برای ذخیره اطلاعات هر وب سایت در یک برنامه متفاوت ایجاد کنید. شما می توانید هر نامی را برای برنامه خود انتخاب کنید.

cd MyEComRecomm/
pio app new myecom

خروجی زیر را مشاهده خواهید کرد.

[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

خروجی فوق همچنین حاوی کلید دستیابی است که برای تأیید اعتبار هنگام ارسال داده های ورودی به سرور رویداد استفاده می شود.

همیشه می توانید با اجرای کلید دسترسی به همراه لیست برنامه های موجود را پیدا کنید.

pio app list

خروجی زیر شامل لیستی از برنامه ها و کلید دسترسی را خواهید دید.

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

اکنون که یک برنامه جدید ایجاد کرده ایم ، برخی از داده ها را به آن اضافه خواهیم کرد. در محیط تولید ، شما می خواهید به طور خودکار داده ها را با یکپارچه سازی API سرور رویداد در برنامه به سرور رویداد ارسال کنید. برای یادگیری نحوه عملکرد PredictionIO ، ما برخی از داده های نمونه را در آن وارد می کنیم. موتور قالب یک اسکریپت پایتون را فراهم می کند که می تواند به راحتی برای وارد کردن داده های نمونه به سرور رویداد استفاده شود.

پی پایت را نصب کنید.

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

PredictionIO Python SDK را با استفاده از pip نصب کنید.

sudo pip install predictionio

اسکریپت پایتون را اجرا کنید تا داده های نمونه به سرور رویداد اضافه شود.

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

مطمئن شوید که کلید دسترسی را با کلید دستیابی واقعی خود جایگزین کنید. یک خروجی مشابه را خواهید دید.

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

اسکریپت فوق 10 کاربر ، 50 مورد را در 6 دسته و برخی از رویدادهای تصادفی خرید و بازدید وارد می کند. برای بررسی اینکه آیا رویدادها وارد شده اند یا نه ، می توانید پرس و جو زیر را اجرا کنید.

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

خروجی لیستی از تمام رویدادهای وارد شده با فرمت JSON را به شما نشان می دهد.

اکنون engine.jsonپرونده را در ویرایشگر باز کنید. این پرونده شامل پیکربندی موتور است.

nano engine.json

هر دو مورد را پیدا کنید appNameو ارزش آن را با نام واقعی برنامه ای که قبلاً ایجاد کرده اید جایگزین کنید.

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

برنامه را بسازید.

pio build --verbose

اگر نمی خواهید پیام های گزارش را مشاهده کنید ، --verboseگزینه را حذف کنید. ساخت الگوی موتور برای اولین بار چند دقیقه طول خواهد کشید. با اتمام موفقیت آمیز ساخت ، یک خروجی مشابه را خواهید دید.

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

اکنون موتور را آموزش دهید. در طول آموزش ، موتور مجموعه داده ها را تجزیه و تحلیل می کند و طبق الگوریتم ارائه شده ، خود را آموزش می دهد.

pio train

قبل از استقرار برنامه ، باید پورت را باز کنیم 8000تا وضعیت برنامه در GUI وب مشاهده شود. همچنین وب سایت ها و برنامه های کاربردی با استفاده از سرور رویداد از طریق این درگاه سؤالات خود را ارسال و دریافت می کنند.

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

اکنون می توانید موتور PredictionIO را مستقر کنید.

pio deploy

دستور فوق موتور و سرور وب داخلی را در پورت مستقر می کند 8000تا به سؤالات از وب سایت ها و برنامه های تجارت الکترونیکی پاسخ دهد. هنگامی که موتور با موفقیت مستقر شد ، خروجی زیر را مشاهده خواهید کرد.

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

http://192.0.2.1:8000با استفاده از هر مرورگر مدرن می توانید وضعیت موتور را تأیید کنید . مطمئن شوید که 192.0.2.1آدرس IP واقعی Vultr را جایگزین کرده اید.

این نشان می دهد که الگوی موتور برای توصیه تجارت الکترونیکی مستقر شده و با موفقیت در حال کار است. می توانید u5با اجرای پرس و جو زیر در یک جلسه ترمینال جدید ، از قالب موتور پرس و جو کنید.

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

توصیه های تولید شده را برای کاربر مشاهده خواهید کرد 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}]}

بسته بندی کردن

تبریک می گویم ، Apache PredictionIO با موفقیت در سرور شما مستقر شد. اکنون می توانید از API سرور رویداد برای وارد کردن داده ها به موتور استفاده کنید تا توصیه ها برای کاربر پیش بینی شود. اگر می خواهید ، می توانید از الگوهای دیگر از گالری قالب استفاده کنید. حتماً الگوی موتور Universal rekomander را مشاهده کنید که تقریباً در کلیه موارد استفاده از جمله تجارت الکترونیکی ، اخبار یا فیلم استفاده می شود



Leave a Comment

نحوه بروزرسانی CentOS 7 ، Ubuntu 16.04 و Debian 8

نحوه بروزرسانی CentOS 7 ، Ubuntu 16.04 و Debian 8

هنگام راه اندازی سرور جدید لینوکس ، به روزرسانی سیستم های هسته و سایر بسته ها تا آخرین نسخه پایدار یک روش توصیه شده است. در این مقاله

تنظیم RethinkDB Cluster On CentOS 7

تنظیم RethinkDB Cluster On CentOS 7

مقدمه RethinkDB یک پایگاه داده NoSQL است که داده ها را به عنوان اسناد JSON ذخیره می کند. این یک زبان پرس و جو بسیار بصری است و از ویژگی های آن معمولا در دسترس است

نحوه نصب نسخه باز Vtiger CRM در CentOS 7

نحوه نصب نسخه باز Vtiger CRM در CentOS 7

Vtiger CRM یک نرم افزار محبوب مدیریت ارتباط با مشتری است که می تواند به بنگاهها در رشد فروش ، ارائه خدمات به مشتری و افزایش سود کمک کند. من

نحوه نصب کاناپه CMS 2.0 بر روی یک VPS CentOS 7 LAMP

نحوه نصب کاناپه CMS 2.0 بر روی یک VPS CentOS 7 LAMP

با استفاده از یک سیستم متفاوت؟ Couch CMS یک سیستم مدیریت محتوای منبع ساده و انعطاف پذیر ، آزاد و منبع باز (CMS) است که به طراحان وب اجازه می دهد تا طراحی کنند.

نحوه نصب SonarQube در CentOS 7

نحوه نصب SonarQube در CentOS 7

با استفاده از یک سیستم متفاوت؟ SonarQube یک ابزار منبع باز برای توسعه سیستم با کیفیت است. در جاوا نوشته شده است و چندین پایگاه داده را پشتیبانی می کند. فراهم می کند

نصب Netdata در CentOS 7

نصب Netdata در CentOS 7

با استفاده از یک سیستم متفاوت؟ Netdata یک ستاره در حال افزایش در زمینه نظارت بر معیارهای سیستم در زمان واقعی است. در مقایسه با سایر ابزارهای مشابه ، Netdata:

نحوه فعال سازی پشتیبانی HTTP / 2 در DirectAdmin (CentOS)

نحوه فعال سازی پشتیبانی HTTP / 2 در DirectAdmin (CentOS)

HTTP / 2 جدیدترین نسخه پروتکل HTTP است که از SPDY مستقر است. توسعه آن توسط Google آغاز شده است و HTTP / 2 تا حد زیادی بر اساس پایگاه کد است

نحوه نصب سرور Starbound در CentOS 7

نحوه نصب سرور Starbound در CentOS 7

با استفاده از یک سیستم متفاوت؟ در این آموزش ، Ill در مورد نحوه راه اندازی یک سرور Starbound در CentOS 7 توضیح می دهد. پیش نیازها: شما باید این بازی را روی خود داشته باشید

یک سرور چند نفره SA-MP San Andreas را در CentOS 6 تنظیم کنید

یک سرور چند نفره SA-MP San Andreas را در CentOS 6 تنظیم کنید

به یکی دیگر از آموزش های Vultr خوش آمدید. در اینجا ، نحوه نصب و اجرای سرور SAMP را یاد خواهید گرفت. این راهنما برای CentOS 6 نوشته شده است. پیش نیازهای مورد نیاز شما

Elgg را روی CentOS 7 نصب کنید

Elgg را روی CentOS 7 نصب کنید

با استفاده از یک سیستم متفاوت؟ Elgg یک موتور شبکه ای منبع باز است که امکان ایجاد محیط های اجتماعی از جمله شبکه های اجتماعی دانشگاه را فراهم می کند

نحوه نصب سرور RStudio در CentOS 7

نحوه نصب سرور RStudio در CentOS 7

RStudio Server نسخه وب RStudio است که مجموعه ای از ابزارهایی است که برای تسهیل کار برنامه نویسی با استفاده از زبان برنامه نویسی R طراحی شده است. در سه

نصب Bolt CMS در CentOS 7

نصب Bolt CMS در CentOS 7

Bolt یک CMS منبع باز است که به زبان PHP نوشته شده است. کد منبع Bolts در GitHub میزبانی شده است. این راهنما نحوه نصب Bolt CMS را در CentOS 7 Vult تازه نشان می دهد

نحوه نصب Elasticsearch در سرور Vultr CentOS 7

نحوه نصب Elasticsearch در سرور Vultr CentOS 7

Elasticsearch یک موتور جستجوی کامل و متن تحلیلی متن کامل است. به لطف تطبیق پذیری ، مقیاس پذیری و سهولت استفاده ، Elasticsearch گسترده تر است

Kubernetes With Kubeadm را در CentOS 7 مستقر کنید

Kubernetes With Kubeadm را در CentOS 7 مستقر کنید

بررسی اجمالی این مقاله به شما کمک می کند تا در هر زمان خوشه ای از Kubernetes را جمع کنید و با kubeadm در حال اجرا باشید. در این راهنما از دو سرور استفاده می شود

راه اندازی Sails.js برای توسعه در CentOS 7

راه اندازی Sails.js برای توسعه در CentOS 7

با استفاده از یک سیستم متفاوت؟ مقدمه Sails.js یک چارچوب MVC ��رای Node.js است ، شبیه به Ruby on Rails. این امر برای ایجاد برنامه های مدرن ver

پیکربندی BGP با استفاده از Quagga در Vultr (CentOS 7)

پیکربندی BGP با استفاده از Quagga در Vultr (CentOS 7)

Vultrs عملکرد IP فضای شما را امکان پذیر می سازد تا آزادی بی سابقه ای در اختصاص منابع IP شخصی شما به سرورهای cloud Vultr داشته باشید. ما کلی

نحوه نصب PufferPanel (کنترل پنل کنکوری رایگان) در CentOS 7

نحوه نصب PufferPanel (کنترل پنل کنکوری رایگان) در CentOS 7

مقدمه در این آموزش ، PufferPanel را در Vultr VPS ما نصب کنید. PufferPanel یک پانل کنترل با منبع آزاد و بصورت رایگان برای مدیریت شما است

ابزارهای نظارت بهتر برای اوبونتو و CentOS

ابزارهای نظارت بهتر برای اوبونتو و CentOS

معرفی سیستم های لینوکس به طور پیش فرض مانند top ، df و du با ابزارهای نظارتی ارسال می شوند که به نظارت بر فرایندها و فضای دیسک کمک می کنند. با این حال ، اغلب اوقات ، آنها به صورت طاقت فرسا هستند

دستگاه های خود را با استفاده از LibreNMS در CentOS 7 نظارت کنید

دستگاه های خود را با استفاده از LibreNMS در CentOS 7 نظارت کنید

با استفاده از یک سیستم متفاوت؟ LibreNMS یک سیستم نظارت بر شبکه منبع باز کاملاً برجسته است. از SNMP برای به دست آوردن داده ها از دستگاه های مختلف استفاده می کند. یک نوع

نحوه نصب Gitea در CentOS 7

نحوه نصب Gitea در CentOS 7

با استفاده از یک سیستم متفاوت؟ Gitea یک منبع کنترل جایگزین متن باز و خود میزبان است که توسط Git ساخته شده است. Gitea در Golang نوشته شده و هست

نحوه نصب بستر سبد خرید LiteCart در اوبونتو 16.04

نحوه نصب بستر سبد خرید LiteCart در اوبونتو 16.04

LiteCart یک بستر سبد خرید آزاد و منبع باز است که به زبان های PHP ، jQuery و HTML 5 نوشته شده است. این نرم افزار ساده ، سبک و با کاربرد آسان است.

نحوه نصب Anchor CMS بر روی یک VPS Fedora 26 LAMP

نحوه نصب Anchor CMS بر روی یک VPS Fedora 26 LAMP

با استفاده از یک سیستم متفاوت؟ Anchor CMS یک سیستم مدیریت محتوا (CMS) بسیار ساده و بسیار سبک ، بسیار آزاد و آزاد است.

اشتراک NFS را در Debian تنظیم کنید

اشتراک NFS را در Debian تنظیم کنید

NFS یک سیستم فایل مبتنی بر شبکه است که به رایانه ها اجازه می دهد تا از طریق شبکه رایانه ای به فایلها دسترسی پیدا کنند. این راهنما توضیح می دهد که چگونه می توانید پوشه ها را روی NF قرار دهید

نحوه بروزرسانی CentOS 7 ، Ubuntu 16.04 و Debian 8

نحوه بروزرسانی CentOS 7 ، Ubuntu 16.04 و Debian 8

هنگام راه اندازی سرور جدید لینوکس ، به روزرسانی سیستم های هسته و سایر بسته ها تا آخرین نسخه پایدار یک روش توصیه شده است. در این مقاله

نحوه نصب Matomo Analytics در Fedora 28

نحوه نصب Matomo Analytics در Fedora 28

با استفاده از یک سیستم متفاوت؟ Matomo (سابقا پیویک) یک بستر تحلیلی منبع باز است ، یک جایگزین باز برای Google Analytics. منبع Matomo میزبان o

یک سرور TeamTalk را در لینوکس تنظیم کنید

یک سرور TeamTalk را در لینوکس تنظیم کنید

TeamTalk یک سیستم کنفرانس است که به کاربران امکان می دهد مکالمات صوتی / تصویری با کیفیت بالا ، چت متنی ، انتقال فایل ها و صفحه های به اشتراک بگذارند. من

با استفاده از کلید SSH خود برای ورود به کاربران غیر ریشه استفاده کنید

با استفاده از کلید SSH خود برای ورود به کاربران غیر ریشه استفاده کنید

Vultr یک ویژگی را فراهم می کند که به شما امکان می دهد با ایجاد یک نمونه جدید ، کلیدهای SSH را از قبل نصب کنید. این اجازه می دهد تا به کاربر root دسترسی داشته باشید ، با این حال ، th

نحوه نصب انجمن NodeBB در FreeBSD 12

نحوه نصب انجمن NodeBB در FreeBSD 12

با استفاده از یک سیستم متفاوت؟ NodeBB یک نرم افزار انجمن مبتنی بر Node.js است. از سوکت های وب برای تعامل فوری و اعلامیه های زمان واقعی استفاده می کند. NodeB

نصب و راه اندازی ZNC در اوبونتو

نصب و راه اندازی ZNC در اوبونتو

ZNC یک پیشرانه پیشرفته شبکه IRC است که تمام وقت بهم متصل می شود تا مشتری IRC بتواند بدون از دست دادن جلسه گپ قطع یا وصل شود.

نحوه نصب Ranger Terminal File Manager در لینوکس

نحوه نصب Ranger Terminal File Manager در لینوکس

رنجر یک مدیر فایل مبتنی بر خط فرمان است که دارای کلیدهای اتصال VI است. این برنامه یک رابط لعنتی مینیمالیستی و زیبا با نمای سلسله مراتب فهرست ارائه می دهد