كيفية تثبيت واستخدام Apache PredictionIO للتعلم الآلي على CentOS 7

من المستحيل استخدام الأساليب التقليدية لتحليل البيانات عندما تصل مجموعات البيانات إلى حجم معين. من البدائل الحديثة لتحليل المجموعات الضخمة من البيانات استخدام أساليب التعلم الآلي. التعلم الآلي قادر على تحقيق نتائج دقيقة عند استخدام خوارزمية سريعة وفعالة.

Apache PredictionIO هو خادم تعلم آلي مفتوح المصدر يستخدم لإنشاء محركات تنبؤية لأي مهمة تعلم آلي. إنه يقصر وقت تطبيق التعلم الآلي من المختبر إلى الإنتاج باستخدام قوالب محرك قابلة للتخصيص والتي يمكن بناؤها ونشرها بسرعة. يوفر مكونات جمع البيانات وعرضها ، ويوجز التكنولوجيا الأساسية لفضح واجهة برمجة التطبيقات التي تسمح للمطورين بالتركيز على مكونات التحويل. بمجرد نشر خادم محرك PredictionIO كخدمة ويب ، يمكنه الرد على الاستعلامات الديناميكية في الوقت الفعلي.

يتكون Apache PredictionIO من مكونات مختلفة.

  • منصة PredictionIO : مكدس تعلُّم آلي مفتوح المصدر مبني على قمة بعض التطبيقات مفتوحة المصدر المتطورة مثل Apache Spark و Apache Hadoop و Apache HBase و Elasticsearch.
  • Event Server : يجمع هذا بشكل مستمر البيانات من خادم الويب أو خادم التطبيقات المحمولة في وضع الوقت الحقيقي أو وضع الدُفعة. يمكن استخدام البيانات التي تم جمعها لتدريب المحرك أو لتوفير عرض موحد لتحليل البيانات. يستخدم خادم الأحداث Apache HBase لتخزين البيانات.
  • خادم المحرك : إن خادم المحرك مسؤول عن عمل التنبؤ الفعلي. يقرأ بيانات التدريب من مخزن البيانات ويستخدم واحد أو أكثر من خوارزمية التعلم الآلي لبناء النماذج التنبؤية. يستجيب محرك ، بمجرد نشره كخدمة ويب ، للاستفسارات التي أجراها تطبيق ويب أو جوال باستخدام REST API أو SDK.
  • معرض النماذج : يقدم هذا المعرض أنواعًا مختلفة من قوالب المحرك سابقة الإنشاء. يمكنك اختيار نموذج مشابه لحالة استخدامك وتعديله وفقًا لمتطلباتك.

المتطلبات الأساسية

  • نسخة خادم Vultr CentOS 7 مع ذاكرة وصول عشوائي بسعة 8 جيجابايت على الأقل. لأغراض الاختبار والتطوير ، يمكنك اختيار مثيل بذاكرة وصول عشوائي 4 جيجابايت وذاكرة تبديل 4 جيجابايت أخرى .
  • A المستخدم سودو .

في هذا البرنامج التعليمي ، سوف نستخدم 192.0.2.1كعنوان IP العام للخادم. استبدل جميع حالات التكرار 192.0.2.1بعنوان IP العام لـ Vultr.

قم بتحديث نظامك الأساسي باستخدام الدليل كيفية تحديث CentOS 7 . بمجرد تحديث نظامك ، تابع تثبيت Java.

قم بتثبيت Java

تتطلب العديد من مكونات PredictionIO JDK أو Java Development Kit ، الإصدار 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

قم بتنزيل أرشيف ملف PredictionIO المصدر باستخدام أي موقع Apache Mirror .

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

قم بتنزيل الإصدار 2.11.8 من Scala واستخراجه في 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. قم بتنزيل الإصدار 2.1.1 من Spark واستخراجه في 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

قم بتنزيل الإصدار 5.5.2 من Elasticsearch واستخراجه في 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. قم بتحرير ملف بيئة HBase لتعيين JAVA_HOMEالمسار.

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

خط uncomment رقم 27 وتعيين JAVA_HOMEعلى مسار jreتثبيت Java الخاص بك. يمكنك العثور على المسار إلى JAVA القابل للتنفيذ باستخدام readlink -f $(which 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يفترض التكوين الافتراضي في ملف البيئة PredictionIO أننا نستخدم 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

قم بإلغاء تثبيت السطر واضبط اسم المجموعة على نفس الاسم المحدد في ملف بيئة التنبؤ. يتم تعيين اسم الكتلة 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 وخادم الأحداث باستخدام أمر واحد.

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 والتي يمكن تثبيتها بسهولة على خادم 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).

الآن بعد أن أنشأنا تطبيقًا جديدًا ، سنضيف بعض البيانات إليه. في بيئة الإنتاج ، قد ترغب في إرسال البيانات تلقائيًا إلى خادم الأحداث من خلال دمج واجهة برمجة تطبيقات خادم الحدث في التطبيق. لمعرفة كيفية عمل PredictionIO ، سنقوم باستيراد بعض عينات البيانات إليه. يوفر محرك القالب سكربت Python الذي يمكن استخدامه بسهولة لاستيراد عينات البيانات إلى خادم الأحداث.

قم بتثبيت Python pip.

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

قم بتثبيت PredictionIO Python SDK باستخدام النقطة.

sudo pip install predictionio

شغّل نص Python النصي لإضافة بيانات نموذجية إلى خادم الأحداث.

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حتى يمكن عرض حالة التطبيق على Web 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 بنجاح على خادمك. يمكنك الآن استخدام واجهة برمجة التطبيقات لخادم الحدث لاستيراد البيانات إلى المحرك للتنبؤ بالتوصيات للمستخدم. إذا كنت تريد ، يمكنك استخدام بعض القوالب الأخرى من معرض القوالب. تأكد من التحقق من نموذج محرك التوصية العالمية الذي يمكن استخدامه في جميع حالات الاستخدام تقريبًا بما في ذلك التجارة الإلكترونية أو الأخبار أو الفيديو.



Leave a Comment

كيفية تثبيت وتكوين CyberPanel على خادم CentOS 7 الخاص بك

كيفية تثبيت وتكوين CyberPanel على خادم CentOS 7 الخاص بك

استخدام نظام مختلف؟ مقدمة تعد CyberPanel واحدة من أولى لوحات التحكم في السوق مفتوحة المصدر وتستخدم OpenLiteSpeed. ما هذا

كيفية تثبيت CMS أكتوبر على CentOS 7

كيفية تثبيت CMS أكتوبر على CentOS 7

أكتوبر هو نظام إدارة محتوى مفتوح المصدر يعتمد على Laravel PHP Framework. مع واجهة أنيقة وبنية وحدات موجزة

قم بتثبيت RockMongo على CentOS 7

قم بتثبيت RockMongo على CentOS 7

RockMongo هي أداة إدارة MongoDB على الويب تشبه أداة إدارة MySQL: phpMyAdmin. سيغطي هذا البرنامج التعليمي عملية التثبيت

كيفية نشر Lets Chat Server على CentOS 7

كيفية نشر Lets Chat Server على CentOS 7

Lets Chat هو تطبيق دردشة مفتوح المصدر مصمم لتوفير خدمة الرسائل ذاتية الاستضافة للفرق الصغيرة. يعتمد Lets Chat على NodeJS و MongoDB

كيفية تثبيت أداة إدارة مشروع Taiga على CentOS 7

كيفية تثبيت أداة إدارة مشروع Taiga على CentOS 7

استخدام نظام مختلف؟ Taiga هو تطبيق مجاني ومفتوح المصدر لإدارة المشاريع. على عكس أدوات إدارة المشاريع الأخرى ، يستخدم Taiga زيادة

كيفية تثبيت المجدول المحجوز على CentOS 7

كيفية تثبيت المجدول المحجوز على CentOS 7

استخدام نظام مختلف؟ المتطلبات الأساسية مثيل خادم Vultr CentOS 7. مستخدم sudo. الخطوة 1: تحديث النظام أولاً ، قم بتحديث خادم النظام الخاص بك إلى th

تثبيت Netdata على CentOS 7

تثبيت Netdata على CentOS 7

استخدام نظام مختلف؟ Netdata هي نجمة صاعدة في مجال مراقبة مقاييس النظام في الوقت الفعلي. مقارنة بالأدوات الأخرى من نفس النوع ، Netdata:

كيفية تثبيت DreamFactory Open Source على CentOS 7

كيفية تثبيت DreamFactory Open Source على CentOS 7

DreamFactory هو برنامج مفتوح المصدر يمكنه تحويل أي قاعدة بيانات إلى منصة RESTful API. يمكن نشر DreamFactory على منصات مختلفة. في ثي

كيفية تثبيت خادم Starbound على CentOS 7

كيفية تثبيت خادم Starbound على CentOS 7

استخدام نظام مختلف؟ في هذا البرنامج التعليمي ، سأشرح لك كيفية إعداد خادم Starbound على CentOS 7. المتطلبات الأساسية يجب أن تمتلك هذه اللعبة عليك

كيفية تثبيت Golang 1.13 على CentOS 8 و Ubuntu 18.04 و Debian 10 و Fedora 31

كيفية تثبيت Golang 1.13 على CentOS 8 و Ubuntu 18.04 و Debian 10 و Fedora 31

Go (تُعرف أيضًا باسم Golang) هي لغة برمجة مكتوبة بشكل ثابت ومجمعة على شكل حرف C تم تطويرها بواسطة Google. جعلت البساطة وتعدد الاستخدامات ب

كيفية تثبيت Django على CentOS 7

كيفية تثبيت Django على CentOS 7

Django هو إطار Python شائع لكتابة تطبيقات الويب. مع Django ، يمكنك بناء التطبيقات بشكل أسرع ، دون إعادة اختراع العجلة. إذا كنت تريد

قم بإعداد خادم SA-MP San Andreas متعدد اللاعبين على CentOS 6

قم بإعداد خادم SA-MP San Andreas متعدد اللاعبين على CentOS 6

مرحبًا بك في برنامج تعليمي Vultr آخر. هنا ، ستتعلم كيفية تثبيت خادم SAMP وتشغيله. تمت كتابة هذا الدليل الخاص بـ CentOS 6. المتطلبات الأساسية التي ستحتاج إليها

تثبيت Revive Adserver على CentOS 7

تثبيت Revive Adserver على CentOS 7

Revive Adserver هو نظام عرض إعلانات مجاني ومفتوح المصدر يمكن استخدامه لإدارة الإعلانات على مواقع الويب و / أو التطبيقات و / أو مشغلات الفيديو. في هذه المقالة ،

قم بتثبيت Elgg على CentOS 7

قم بتثبيت Elgg على CentOS 7

استخدام نظام مختلف؟ Elgg هو محرك تواصل اجتماعي مفتوح المصدر يسمح بإنشاء بيئات اجتماعية مثل الشبكات الاجتماعية في الحرم الجامعي

قم ببناء شبكتك الاجتماعية مع الشتات على CentOS 7

قم ببناء شبكتك الاجتماعية مع الشتات على CentOS 7

استخدام نظام مختلف؟ الشتات هو شبكة اجتماعية مفتوحة المصدر تدرك الخصوصية. في هذا البرنامج التعليمي ، ستتعلم كيفية إعداد وتكوين po Diaspora po

نشر Kubernetes مع Kubeadm على CentOS 7

نشر Kubernetes مع Kubeadm على CentOS 7

نظرة عامة تهدف هذه المقالة إلى مساعدتك في إنشاء مجموعة Kubernetes وتشغيلها باستخدام kubeadm في لمح البصر. سيقوم هذا الدليل بنشر خادمين في

قم بإعداد Sails.js للتطوير على CentOS 7

قم بإعداد Sails.js للتطوير على CentOS 7

استخدام نظام مختلف؟ مقدمة Sails.js هو إطار عمل MVC لـ Node.js ، مشابه لـ Ruby on Rails. يجعل لتطوير التطبيقات الحديثة ver

كيفية تجميع Nginx من المصدر على CentOS 7

كيفية تجميع Nginx من المصدر على CentOS 7

استخدام نظام مختلف؟ يمكن استخدام NGINX كخادم HTTP / HTTPS أو خادم وكيل عكسي أو خادم وكيل بريد أو موازن تحميل أو فاصل TLS أو ذاكرة تخزين مؤقت

كيفية تثبيت dotCMS على CentOS 7

كيفية تثبيت dotCMS على CentOS 7

استخدام نظام مختلف؟ dotCMS هو نظام إدارة محتوى من فئة مفتوحة المصدر مفتوح بلغة جافا. أنه يحتوي تقريبا على كل ميزة مطلوبة ر

كيفية تثبيت PufferPanel (لوحة تحكم Minecraft المجانية) على CentOS 7

كيفية تثبيت PufferPanel (لوحة تحكم Minecraft المجانية) على CentOS 7

مقدمة في هذا البرنامج التعليمي ، سيتم تثبيت PufferPanel على Vultr VPS. PufferPanel هي لوحة تحكم مفتوحة المصدر مجانية للاستخدام لإدارتك

نظرة ثاقبة على 26 أسلوبًا لتحليل البيانات الضخمة: الجزء الأول

نظرة ثاقبة على 26 أسلوبًا لتحليل البيانات الضخمة: الجزء الأول

نظرة ثاقبة على 26 أسلوبًا لتحليل البيانات الضخمة: الجزء الأول

6 أشياء شديدة الجنون حول نينتندو سويتش

6 أشياء شديدة الجنون حول نينتندو سويتش

يعرف الكثير منكم أن Switch سيصدر في مارس 2017 وميزاته الجديدة. بالنسبة لأولئك الذين لا يعرفون ، قمنا بإعداد قائمة بالميزات التي تجعل "التبديل" "أداة لا غنى عنها".

وعود التكنولوجيا التي لم يتم الوفاء بها بعد

وعود التكنولوجيا التي لم يتم الوفاء بها بعد

هل تنتظر عمالقة التكنولوجيا للوفاء بوعودهم؟ تحقق من ما تبقى دون تسليم.

وظائف طبقات معمارية مرجعية للبيانات الضخمة

وظائف طبقات معمارية مرجعية للبيانات الضخمة

اقرأ المدونة لمعرفة الطبقات المختلفة في بنية البيانات الضخمة ووظائفها بأبسط طريقة.

كيف يمكن للذكاء الاصطناعي نقل أتمتة العمليات إلى المستوى التالي؟

كيف يمكن للذكاء الاصطناعي نقل أتمتة العمليات إلى المستوى التالي؟

اقرأ هذا لمعرفة مدى انتشار الذكاء الاصطناعي بين الشركات الصغيرة وكيف أنه يزيد من احتمالات نموها ومنح منافسيها القدرة على التفوق.

CAPTCHA: ما هي المدة التي يمكن أن تظل تقنية قابلة للتطبيق للتميز بين الإنسان والذكاء الاصطناعي؟

CAPTCHA: ما هي المدة التي يمكن أن تظل تقنية قابلة للتطبيق للتميز بين الإنسان والذكاء الاصطناعي؟

لقد أصبح حل CAPTCHA صعبًا جدًا على المستخدمين في السنوات القليلة الماضية. هل ستكون قادرة على أن تظل فعالة في اكتشاف البريد العشوائي والروبوتات في المستقبل القريب؟

التفرد التكنولوجي: مستقبل بعيد للحضارة الإنسانية؟

التفرد التكنولوجي: مستقبل بعيد للحضارة الإنسانية؟

مع تطور العلم بمعدل سريع ، واستلام الكثير من جهودنا ، تزداد أيضًا مخاطر تعريض أنفسنا إلى تفرد غير قابل للتفسير. اقرأ ، ماذا يمكن أن يعني التفرد بالنسبة لنا.

التطبيب عن بعد والرعاية الصحية عن بعد: المستقبل هنا

التطبيب عن بعد والرعاية الصحية عن بعد: المستقبل هنا

ما هو التطبيب عن بعد والرعاية الصحية عن بعد وأثره على الأجيال القادمة؟ هل هو مكان جيد أم لا في حالة الوباء؟ اقرأ المدونة لتجد طريقة عرض!

هل تساءلت يومًا كيف يربح المتسللون الأموال؟

هل تساءلت يومًا كيف يربح المتسللون الأموال؟

ربما سمعت أن المتسللين يكسبون الكثير من المال ، لكن هل تساءلت يومًا كيف يجنون هذا النوع من المال؟ دعنا نناقش.

يتسبب التحديث الإضافي لنظام macOS Catalina 10.15.4 في حدوث مشكلات أكثر من حلها

يتسبب التحديث الإضافي لنظام macOS Catalina 10.15.4 في حدوث مشكلات أكثر من حلها

أصدرت Apple مؤخرًا macOS Catalina 10.15.4 تحديثًا تكميليًا لإصلاح المشكلات ولكن يبدو أن التحديث يتسبب في المزيد من المشكلات التي تؤدي إلى إنشاء أجهزة macOS. قراءة هذه المادة لمعرفة المزيد