CentOS 7de Makine Öğrenimi için Apache PredictionIO Kurulumu ve Kullanımı

Veri setlerine belirli bir boyuta ulaştığında geleneksel veri analiz yaklaşımlarının kullanılması imkansızdır. Büyük veri setlerini analiz etmenin modern bir alternatifi, makine öğrenme yöntemlerini kullanmaktır. Makine öğrenimi, hızlı ve verimli bir algoritma kullanırken doğru sonuçlar üretebilir.

Apache PredictionIO, herhangi bir makine öğrenimi görevi için tahmin motorları oluşturmak için kullanılan açık kaynaklı bir makine öğrenim sunucusudur. Hızla oluşturulabilen ve dağıtılabilen özelleştirilebilir motor şablonları kullanarak makine öğrenimi uygulamasının laboratuvardan üretime süresini kısaltır. Veri toplama ve sunum bileşenleri sağlar ve geliştiricilerin dönüşüm bileşenlerine odaklanmalarını sağlayan bir API'yi ortaya çıkarmak için teknolojinin temelini oluşturur. PredictionIO'nun motor sunucusu bir web hizmeti olarak dağıtıldığında, dinamik sorgulara gerçek zamanlı olarak yanıt verebilir.

Apache TahminIO farklı bileşenlerden oluşur.

  • PredictionIO Platformu : Apache Spark, Apache Hadoop, Apache HBase ve Elasticsearch gibi son teknoloji ürünü açık kaynaklı uygulamaların üzerine inşa edilmiş açık kaynaklı bir makine öğrenme yığını.
  • Olay Sunucusu : Bu, sürekli olarak gerçek zamanlı modda veya toplu iş modunda web sunucunuzdan veya mobil uygulama sunucunuzdan veri toplar. Toplanan veriler motoru eğitmek veya veri analizi için birleşik bir görünüm sağlamak için kullanılabilir. Olay sunucusu, verileri depolamak için Apache HBase kullanır.
  • Motor Sunucusu : Motor sunucusu gerçek tahmini yapmaktan sorumludur. Veri deposundan egzersiz verilerini okur ve öngörücü modelleri oluşturmak için bir veya daha fazla makine öğrenme algoritması kullanır. Bir kez web hizmeti olarak dağıtılan bir motor, bir web veya mobil uygulama tarafından yapılan sorgulara REST API veya SDK kullanarak yanıt verir.
  • Şablon Galerisi : Bu galeri, çeşitli önceden oluşturulmuş motor şablonları sunar. Kullanım durumunuza benzer bir şablon seçebilir ve gereksinimlerinize göre değiştirebilirsiniz.

Ön şartlar

  • En az 8 GB RAM'e sahip bir Vultr CentOS 7 sunucu örneği. Test ve geliştirme amacıyla, 4GB RAM ve başka bir 4GB takas belleği olan bir örnek seçebilirsiniz .
  • Bir sudo kullanıcısı .

Bu öğreticide, 192.0.2.1sunucunun genel IP adresi olarak kullanacağız . 192.0.2.1İle ilgili tüm tekrarları Vultr genel IP adresinizle değiştirin.

CentOS 7'yi Güncelleme kılavuzunu kullanarak temel sisteminizi güncelleyin . Sisteminiz güncellendiğinde, Java'yı yüklemeye devam edin.

Java'yı yükleyin

PredictionIO bileşenlerinin birçoğunun çalışması için JDK veya Java Geliştirme Kiti sürüm 8 gerekir. Hem OpenJDK hem de Oracle Java'yı destekler. Bu öğreticide, OpenJDK sürüm 8'i kuracağız.

OpenJDK, paket varsayılan YUM deposunda bulunduğundan kolayca kurulabilir.

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

Java'nın sürümünü doğru yüklendiğinden emin olmak için doğrulayın.

java -version

Benzer bir çıktı alırsınız.

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

Daha ileri gidebilmemiz için, JAVA_HOMEve JRE_HOMEortam değişkenlerini ayarlamamız gerekecek . Sisteminizdeki JAVA yürütülebilir dosyasının mutlak yolunu bulun.

readlink -f $(which java)

Benzer bir çıktı göreceksiniz.

[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

Şimdi, Java dizininin yoluna göre ayar JAVA_HOMEve JRE_HOMEortam değişkeni.

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_profileDosyayı yürütün .

source ~/.bash_profile

Artık echo $JAVA_HOMEortam değişkeninin ayarlanıp ayarlanmadığını kontrol etmek için komutu çalıştırabilirsiniz .

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

TahminIO'yu Yükle

Apache, yerel olarak indirilebilen ve derlenebilen PredictionIO kaynak dosyaları sağlar. Kaynak dosyayı indirmek ve derlemek için yeni bir geçici dizin oluşturun.

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

Herhangi bir Apache Mirror sitesini kullanarak PredictionIO kaynak dosya arşivini indirin .

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

PredictionIO'nun bir dağıtımını oluşturmak için arşivi çıkarın ve kaynağı derleyin.

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

Yukarıdaki dağıtım olan bağımlılıkları, varsayılan sürümleri karşı inşa edilecek Scala 2.11.8, Spark 2.1.1, Hadoop 2.7.3ve ElasticSearch 5.5.2. Yapının bitmesini bekleyin, sisteminizin performansına bağlı olarak tamamlanması yaklaşık on dakika sürer.

Not : Bağımlılıkların en son desteklenen sürümünü kullanmakta özgürsünüz, ancak bazı işlevler kullanımdan kaldırılabileceği için derleme sırasında bazı uyarılar görebilirsiniz. Çalıştırın ./make-distribution.sh -Dscala.version=2.11.11 -Dspark.version=2.1.2 -Dhadoop.version=2.7.4 -Delasticsearch.version=5.5.3, sürüm numarasını seçiminize göre değiştirin.

Derleme başarıyla tamamlandığında, sonunda aşağıdaki mesajı görürsünüz.

...
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 ikili dosyaları PredictionIO-0.12.0-incubating.tar.gzarşive kaydedilir . Arşivi /optdizine çıkarın ve mevcut kullanıcıya sahipliğini sağlayın.

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

PIO_HOMEOrtam değişkenini ayarlayın .

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

Gerekli Bağımlılıkları Yükle

HBase, SparkVe gibi PredictionIO bağımlılıklarını yüklemek için yeni bir dizin oluşturun Elasticsearch.

mkdir /opt/PredictionIO-0.12.0-incubating/vendors

Scala sürüm 2.11.8'i indirin ve vendorsdizine çıkarın .

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 sürüm 2.7.3'ü indirin ve vendorsdizine çıkarın .

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 için varsayılan işleme motorudur. Spark 2.1.1 sürümünü indirin ve vendorsdizine çıkarın .

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 sürüm 5.5.2'yi indirin ve vendorsdizine çıkarın .

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

Son olarak, HBase 1.2.6 sürümünü indirin ve vendorsdizine ayıklayın .

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.xmlHBase'i bağımsız bir ortamda çalışacak şekilde yapılandırmak için yapılandırma dosyasını açın .

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

Boş yapılandırma bloğunu bulun ve aşağıdaki yapılandırmayla değiştirin.

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

Veri dizini HBase tarafından otomatik olarak oluşturulacaktır. JAVA_HOMEYolu ayarlamak için HBase ortam dosyasını düzenleyin .

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

Öneri 27 numaralı satır ve Java kurulumunuzun JAVA_HOMEyoluna ayarlanır jre. JAVA yürütülebilir dosyasının yolunu readlink -f $(which java)komutu kullanarak bulabilirsiniz .

# 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

Ayrıca, JAVA 8 için gerekli olmadığından 46 ve 47 numaralı satırları da yorumlayın.

# 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 Ortamını Yapılandırma

PredictionIO ortam dosyasındaki varsayılan yapılandırma, pio-env.shPostgreSQL veya MySQL kullandığımızı varsayar. HBase ve Elasticsearch kullandığımız için, dosyadaki hemen hemen her yapılandırmayı değiştirmemiz gerekecek. Mevcut dosyanın yedeğini almak ve yeni bir PredictionIO ortam dosyası oluşturmak en iyisidir.

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

Şimdi PredictionIO ortam yapılandırması için yeni bir dosya oluşturun.

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

Dosyayı aşağıdaki yapılandırmayla doldurun.

# 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

Dosyayı kaydedin ve editörden çıkın.

Elasticsearch yapılandırma dosyasını açın.

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

Satırı açın ve küme adını PredictionIO ortam dosyasında verilen adla tamamen aynı olacak şekilde ayarlayın. Küme adı pioyukarıdaki yapılandırmada olarak ayarlanmıştır.

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

Şimdi $PIO_HOME/bindizini PATH değişkenine ekleyin, böylece PredictionIO yürütülebilir dosyaları doğrudan yürütülür.

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

Bu noktada, PredictionIO sunucunuza başarıyla yüklenmiştir.

Tahmin BaşlangıçIO

PredictionIO'da Elasticsearch, HBase ve Event server gibi tüm hizmetleri tek bir komut kullanarak başlatabilirsiniz.

pio-start-all

Aşağıdaki çıktıyı göreceksiniz.

[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 sunucusunun durumunu kontrol etmek için aşağıdaki komutu kullanın.

pio status

Aşağıdaki çıktıyı göreceksiniz.

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

Yukarıdaki mesajlarda da görebildiğimiz gibi, sistemimiz bir motor şablonu uygulamak ve verileri tahmin etmek için kullanıma hazırdır.

Motor Şablonu Uygulama

PredictionIO sunucusuna kolayca kurulabilen PredictionIO Şablon Galerisi'nde kullanıma hazır birkaç motor şablonu bulunmaktadır . Gereksinimlerinize yakın olanı bulmak için motor şablonları listesine göz atabilir veya kendi motorunuzu yazabilirsiniz.

Bu öğreticide, E-Commerce Recommendationbazı örnek veriler kullanarak PredictionIO sunucusunun işlevselliğini göstermek için motor şablonunu uygulayacağız . Bu motor şablonu, bir e-ticaret web sitesindeki bir kullanıcıya bazı kişisel önerilerde bulunur. Varsayılan olarak, stok eğitimlerini hariç tutma veya model eğitildikten sonra kaydolan bir kullanıcıya öneriler sağlama gibi özelliklere sahiptir. Ayrıca, varsayılan olarak, motor şablonu kullanıcının görünümlerini ve etkinliklerini, kategorileri ve özellikleri olan öğeleri ve mevcut olmayan öğelerin listesini alır. Motor eğitildikten ve dağıtıldıktan sonra, kullanıcı kimliği ve tavsiye edilecek öğe sayısı ile bir sorgu gönderebilirsiniz. Oluşturulan çıktı, önerilen öğe kimliklerinin sıralı bir listesi olacaktır.

Depoyu klonlamak için kullanılacağı için Git'i yükleyin.

cd ~    
sudo yum -y install git

Sisteminizdeki E-Ticaret Tavsiye motoru şablonunu kopyalayın.

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

E-Ticaret Öneri şablon motoru için yeni bir uygulama oluşturun. PredictionIO'daki her uygulama ayrı bir web sitesine ait verileri saklamak için kullanılır. Birden fazla web siteniz varsa, her web sitesinin verilerini farklı bir uygulamada saklamak için birden fazla uygulama oluşturabilirsiniz. Başvurunuz için herhangi bir isim seçmekte özgürsünüz.

cd MyEComRecomm/
pio app new myecom

Aşağıdaki çıktıyı göreceksiniz.

[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

Yukarıdaki çıktı ayrıca, olay verilerini olay sunucusuna gönderirken kimlik doğrulaması yapmak için kullanılacak erişim anahtarını da içerir.

Erişim anahtarını her zaman çalıştırarak kullanılabilir uygulamalar listesiyle birlikte bulabilirsiniz.

pio app list

Bir uygulama listesi ve erişim anahtarı içeren aşağıdaki çıktıyı göreceksiniz.

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

Şimdi yeni bir uygulama oluşturduğumuza göre, ona bazı veriler ekleyeceğiz. Üretim ortamında, olay sunucusu API'sını uygulamaya entegre ederek verileri olay sunucusuna otomatik olarak göndermek istersiniz. PredictionIO'nun nasıl çalıştığını öğrenmek için, bazı örnek verileri içine aktaracağız. Şablon motoru, örnek verileri olay sunucusuna almak için kolayca kullanılabilecek bir Python betiği sağlar.

Python pip'ini kurun.

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

PredictionIO Python SDK'yı pip kullanarak kurun.

sudo pip install predictionio

Olay sunucusuna örnek veri eklemek için Python komut dosyasını çalıştırın.

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

Erişim anahtarını gerçek erişim anahtarınızla değiştirdiğinizden emin olun. Benzer bir çıktı göreceksiniz.

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

Yukarıdaki komut dosyası 10 kullanıcıyı, 6 kategoride 50 öğeyi ve bazı rastgele satın alma ve görüntüleme olaylarını içe aktarır. Olayların içe aktarılıp aktarılmadığını kontrol etmek için aşağıdaki sorguyu çalıştırabilirsiniz.

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

Çıktı, içe aktarılan tüm olayların listesini JSON biçiminde gösterir.

Şimdi engine.jsondosyayı düzenleyiciye açın. Bu dosya motorun yapılandırmasını içerir.

nano engine.json

Hem oluşumlarını bulun hem de appNamedeğeri daha önce oluşturduğunuz uygulamanın gerçek adıyla değiştirin.

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

Uygulamayı oluşturun.

pio build --verbose

Günlük mesajlarını görmek istemiyorsanız, --verboseseçeneği kaldırın . Motor şablonunu ilk kez oluşturmak birkaç dakika sürecektir. Derleme başarıyla tamamlandığında benzer bir çıktı göreceksiniz.

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

Şimdi motoru eğitin. Eğitim sırasında motor veri setini analiz eder ve sağlanan algoritmaya göre kendini eğitir.

pio train

Uygulamayı dağıtmadan önce, uygulamanın 8000durumunun Web GUI'sinde görüntülenebilmesi için bağlantı noktasını açmamız gerekecek . Ayrıca, olay sunucusunu kullanan web siteleri ve uygulamalar sorgularını bu bağlantı noktası üzerinden gönderir ve alır.

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

Şimdi PredictionIO motorunu dağıtabilirsiniz.

pio deploy

Yukarıdaki komut, motoru ve yerleşik web sunucusunu 8000, e-ticaret web sitelerinden ve uygulamalarından gelen sorgulara yanıt vermek için bağlantı noktasına dağıtır. Motor başarıyla devreye alındıktan sonra aşağıdaki çıktıyı göreceksiniz.

[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:8000Herhangi bir modern tarayıcıyı kullanarak motorun durumunu doğrulayabilirsiniz . 192.0.2.1Gerçek Vultr IP adresinizle değiştirdiğinizden emin olun .

Bu, E-Ticaret önerisi için motor şablonunun başarıyla dağıtıldığını ve çalıştığını gösterir. u5Yeni bir terminal oturumunda aşağıdaki sorguyu çalıştırarak kullanıcı için beş öneri getirmek üzere motor şablonunu sorgulayabilirsiniz.

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

Kullanıcı için oluşturulan önerileri göreceksiniz 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}]}

Paketleme

Tebrikler, Apache PredictionIO sunucunuza başarıyla konuşlandırıldı. Artık kullanıcı için önerileri tahmin etmek üzere verileri motora aktarmak için olay sunucusunun API'sını kullanabilirsiniz. İsterseniz, şablon galerisindeki diğer bazı şablonları da kullanabilirsiniz. E-ticaret, haberler veya video da dahil olmak üzere hemen hemen tüm kullanım durumlarında kullanılabilen Evrensel Tavsiye motoru şablonunu kontrol ettiğinizden emin olun .



Leave a Comment

CentOS 7de Tavşan Kümesini Kümeleme

CentOS 7de Tavşan Kümesini Kümeleme

RabbitMQ, AMQP, STOMP ve diğer iletişim teknolojilerini destekleyen açık kaynaklı bir mesaj aracısıdır. Kurumsal uygulamalarda yaygın olarak kullanılan bir

Pagekit CMSyi CentOS 7ye Yükleme

Pagekit CMSyi CentOS 7ye Yükleme

Farklı Bir Sistem mi Kullanıyorsunuz? Pagekit PHP ile yazılmış açık kaynaklı bir CMSdir. Pagekit kaynak kodu GitHubda herkese açık olarak barındırılıyor. Bu kılavuz size

SSL / TLS ile vsFTPd Nasıl Güvenli Hale Getirilir

SSL / TLS ile vsFTPd Nasıl Güvenli Hale Getirilir

Çok Güvenli FTP arka plan programı, ya da sadece vsFTPd, özelleştirme yeteneği olan hafif bir yazılım parçasıdır. Bu derste bir müttefikimiz olacak

CentOS 7de Yalnızca SFTP Kullanıcı Hesaplarını Kurma

CentOS 7de Yalnızca SFTP Kullanıcı Hesaplarını Kurma

Belirli durumlarda, Sistem Yöneticisinin bir kullanıcı hesabı oluşturması ve yalnızca kendi dosyalarını sFTP yoluyla yönetmek için erişimini kısıtlaması gerekebilir, ancak b

CentOS 6da ModSecurity ile NGINX kurulumu

CentOS 6da ModSecurity ile NGINX kurulumu

Bu makalede, ModSecurity tarafından korunan bir LEMP yığını oluşturmayı açıklayacağım. ModSecurity faydalı bir açık kaynaklı web uygulaması güvenlik duvarıdır.

CentOS 6 Üzerinde Apache, MySQL ve PHP Kurulumu

CentOS 6 Üzerinde Apache, MySQL ve PHP Kurulumu

Giriş LAMP, Linux, Apache, MySQL ve PHPnin kısaltmasıdır. Bu yazılım yığını, kurulum için en popüler açık kaynaklı çözümdür.

CentOS 7 Üzerinde Chamilo 1.11.8 Kurulumu

CentOS 7 Üzerinde Chamilo 1.11.8 Kurulumu

Farklı Bir Sistem mi Kullanıyorsunuz? Chamilo, çevrimiçi eğitim ve takım işbirliği için yaygın olarak kullanılan ücretsiz ve açık kaynaklı bir öğrenme yönetim sistemidir (LMS).

CentOS 7ye Odoo 9 Topluluğunu Yükleme

CentOS 7ye Odoo 9 Topluluğunu Yükleme

Eskiden OpenERP olarak bilinen Odoo, iyi bilinen bir açık kaynaklı ERP iş platformudur. Her büyüklükteki işletme, bol miktarda lis sayesinde Odoodan yararlanabilir

Icinga2yi CentOS 6 veya CentOS 7de Ana / İstemci Modelini Kullanacak Şekilde Değiştirme

Icinga2yi CentOS 6 veya CentOS 7de Ana / İstemci Modelini Kullanacak Şekilde Değiştirme

Icinga2 güçlü bir izleme sistemidir ve bir ana istemci modelinde kullanıldığında, NRPE tabanlı izleme kontrollerine olan ihtiyacın yerini alabilir. Master-Clien

CentOS 7 LAMP VPSye Couch CMS 2.0 Kurulumu

CentOS 7 LAMP VPSye Couch CMS 2.0 Kurulumu

Farklı Bir Sistem mi Kullanıyorsunuz? Couch CMS, web tasarımcılarının tasarlamalarını sağlayan basit ve esnek, ücretsiz ve açık kaynaklı bir İçerik Yönetim Sistemidir (CMS)

NetOSu CentOS 7ye Yükleme

NetOSu CentOS 7ye Yükleme

Farklı Bir Sistem mi Kullanıyorsunuz? Netdata, gerçek zamanlı sistem ölçümleri izleme alanında yükselen bir yıldızdır. Aynı türdeki diğer araçlarla karşılaştırıldığında, Netdata:

CentPN 7 Üzerinde ERPNext Açık Kaynak ERP Kurulumu

CentPN 7 Üzerinde ERPNext Açık Kaynak ERP Kurulumu

Farklı Bir Sistem mi Kullanıyorsunuz? ERP veya Kurumsal Kaynak Planlaması, temel iş süreçlerini yönetmek için kullanılan bir kurumsal uygulama paketidir. ERPNext ücretsizdir

CentOS 6da SA-MP San Andreas Çok Oyunculu Sunucu Kurma

CentOS 6da SA-MP San Andreas Çok Oyunculu Sunucu Kurma

Başka bir Vultr eğitimine hoş geldiniz. Burada, bir SAMP sunucusunun nasıl kurulacağını ve çalıştırılacağını öğreneceksiniz. Bu kılavuz CentOS 6 için yazılmıştır. Önkoşullar

KubOSM ile Kubernetesi CentOS 7de dağıtın

KubOSM ile Kubernetesi CentOS 7de dağıtın

Genel Bakış Bu makale, bir Kubernetes kümesini hemen kurup kubeadm ile çalıştırmanıza yardımcı olmak içindir. Bu kılavuz iki sunucuyu

CentOS 7de Geliştirme için Sails.jsyi kurun

CentOS 7de Geliştirme için Sails.jsyi kurun

Farklı Bir Sistem mi Kullanıyorsunuz? Giriş Sails.js, Ruby on Railse benzer şekilde Node.js için bir MVC çerçevesidir. Modern uygulamalar geliştirmek için yapar

CentOS 6da Half Life 2 Sunucusu Kurma

CentOS 6da Half Life 2 Sunucusu Kurma

Bu eğitimde, CentOS 6 Sistemine Half Life 2 oyun sunucusu kurma süreci ele alınacaktır. 1. Adım: Önkoşulları kurma

PrestaShopu CentOS 7ye Yükleme

PrestaShopu CentOS 7ye Yükleme

PrestaShop popüler bir açık kaynaklı e-ticaret çözümüdür. Kendi çevrimiçi mağazanızı ücretsiz oluşturmak için kullanabilirsiniz. Bu eğitimde, size

CentOS 7 LAMBA VPSye MODX Devrimi Nasıl Yüklenir

CentOS 7 LAMBA VPSye MODX Devrimi Nasıl Yüklenir

Farklı Bir Sistem mi Kullanıyorsunuz? MODX Revolution hızlı, esnek, ölçeklenebilir, ücretsiz ve açık kaynaklı, kurumsal düzeyde bir İçerik Yönetim Sistemi (CMS)

Ubuntu ve CentOS İçin Daha İyi İzleme Araçları

Ubuntu ve CentOS İçin Daha İyi İzleme Araçları

Giriş Linux sistemleri, süreçleri ve disk alanını izlemeye yardımcı olan varsayılan olarak top, df ve du gibi izleme araçlarıyla birlikte gelir. Çoğu zaman, onlar ar

CentOS 7de Kolab Groupware Kurulumu

CentOS 7de Kolab Groupware Kurulumu

Farklı Bir Sistem mi Kullanıyorsunuz? Kolab Groupware, ücretsiz ve açık kaynaklı bir web tabanlı grup yazılımı uygulamasıdır. Özellikleri e-posta iletişiminden, olaylardan oluşur

26 Büyük Veri Analitik Tekniğine Bir Bakış: 1. Bölüm

26 Büyük Veri Analitik Tekniğine Bir Bakış: 1. Bölüm

26 Büyük Veri Analitik Tekniğine Bir Bakış: 1. Bölüm

Nintendo Switch Hakkında Son Derece Çılgın 6 Şey

Nintendo Switch Hakkında Son Derece Çılgın 6 Şey

Birçoğunuz Switch'in Mart 2017'de çıkacağını ve yeni özelliklerini biliyorsunuz. Bilmeyenler için, 'Switch'i 'olmazsa olmaz bir gadget' yapan özelliklerin bir listesini hazırladık.

Hala Teslim Edilmeyen Teknoloji Sözleri

Hala Teslim Edilmeyen Teknoloji Sözleri

Teknoloji devlerinin sözlerini yerine getirmesini mi bekliyorsunuz? teslim edilmeyenleri kontrol edin.

Büyük Veri Referans Mimarisi Katmanlarının İşlevleri

Büyük Veri Referans Mimarisi Katmanlarının İşlevleri

Büyük Veri Mimarisindeki farklı katmanları ve işlevlerini en basit şekilde öğrenmek için blogu okuyun.

Yapay Zeka Süreç Otomasyonunu Nasıl Bir Sonraki Seviyeye Taşıyabilir?

Yapay Zeka Süreç Otomasyonunu Nasıl Bir Sonraki Seviyeye Taşıyabilir?

Yapay Zekanın küçük ölçekli şirketler arasında nasıl popüler hale geldiğini ve onları büyütme ve rakiplerine üstünlük sağlama olasılıklarını nasıl artırdığını öğrenmek için bunu okuyun.

CAPTCHA: İnsan-AI Ayrımı İçin Ne Kadar Geçerli Bir Teknik Kalabilir?

CAPTCHA: İnsan-AI Ayrımı İçin Ne Kadar Geçerli Bir Teknik Kalabilir?

CAPTCHA, son birkaç yılda kullanıcıların çözmesi oldukça zorlaştı. Gelecekte spam ve bot tespitinde etkili kalabilecek mi?

Teknolojik Tekillik: İnsan Uygarlığının Uzak Bir Geleceği mi?

Teknolojik Tekillik: İnsan Uygarlığının Uzak Bir Geleceği mi?

Bilim hızla gelişip birçok çabamızı üstlendikçe, kendimizi açıklanamaz bir Tekilliğe maruz bırakmanın riskleri de artıyor. Okuyun, tekillik bizim için ne anlama gelebilir.

Teletıp ve Uzaktan Sağlık Hizmeti: Gelecek Burada

Teletıp ve Uzaktan Sağlık Hizmeti: Gelecek Burada

Teletıp, uzaktan sağlık hizmetleri ve gelecek nesiller üzerindeki etkisi nedir? Pandemi durumunda iyi bir yer mi değil mi? Bir görünüm bulmak için blogu okuyun!

Hackerların Nasıl Para Kazandığını Hiç Merak Ettiniz mi?

Hackerların Nasıl Para Kazandığını Hiç Merak Ettiniz mi?

Bilgisayar korsanlarının çok para kazandığını duymuş olabilirsiniz, ancak bu kadar parayı nasıl kazandıklarını hiç merak ettiniz mi? Hadi tartışalım.

macOS Catalina 10.15.4 Ek Güncellemesi Çözmekten Daha Fazla Soruna Neden Oluyor

macOS Catalina 10.15.4 Ek Güncellemesi Çözmekten Daha Fazla Soruna Neden Oluyor

Son zamanlarda Apple, sorunları gidermek için macOS Catalina 10.15.4'ü ek bir güncelleme yayınladı, ancak güncelleme, mac makinelerinde tuğla oluşmasına neden olan daha fazla soruna neden oluyor gibi görünüyor. Daha fazla bilgi edinmek için bu makaleyi okuyun