So installieren Sie MODX Revolution auf einem CentOS 7 LAMP VPS
Verwenden Sie ein anderes System? MODX Revolution ist ein schnelles, flexibles, skalierbares, kostenloses und Open-Source-Content-Management-System (CMS) für Unternehmen, das i
Herkömmliche Ansätze zur Datenanalyse können nicht verwendet werden, wenn Datensätze eine bestimmte Größe erreichen. Eine moderne Alternative zur Analyse der riesigen Datenmengen ist die Verwendung von Methoden des maschinellen Lernens. Maschinelles Lernen kann mit einem schnellen und effizienten Algorithmus genaue Ergebnisse liefern.
Apache PredictionIO ist ein Open-Source-Server für maschinelles Lernen, mit dem Predictive Engines für jede maschinelle Lernaufgabe erstellt werden. Durch die Verwendung anpassbarer Engine-Vorlagen, die schnell erstellt und bereitgestellt werden können, verkürzt sich die Zeit für maschinelles Lernen vom Labor bis zur Produktion. Es bietet die Datenerfassungs- und Bereitstellungskomponenten und abstrahiert die zugrunde liegende Technologie, um eine API bereitzustellen, mit der sich Entwickler auf Transformationskomponenten konzentrieren können. Sobald der Engine-Server von PredictionIO als Webdienst bereitgestellt ist, kann er in Echtzeit auf dynamische Abfragen antworten.
Apache PredictionIO besteht aus verschiedenen Komponenten.
In diesem Tutorial verwenden wir 192.0.2.1
als öffentliche IP-Adresse des Servers. Ersetzen Sie alle Vorkommen von 192.0.2.1
durch Ihre öffentliche Vultr-IP-Adresse.
Aktualisieren Sie Ihr Basissystem mithilfe der Anleitung zum Aktualisieren von CentOS 7 . Fahren Sie nach der Aktualisierung Ihres Systems mit der Installation von Java fort.
Viele der Komponenten von PredictionIO erfordern JDK oder Java Development Kit, Version 8, um zu funktionieren. Es unterstützt sowohl OpenJDK als auch Oracle Java. In diesem Tutorial installieren wir OpenJDK Version 8.
OpenJDK kann einfach installiert werden, da das Paket im Standard-YUM-Repository verfügbar ist.
sudo yum -y install java-1.8.0-openjdk-devel
Überprüfen Sie die Java-Version, um sicherzustellen, dass sie korrekt installiert wurde.
java -version
Sie erhalten eine ähnliche Ausgabe.
[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)
Bevor wir fortfahren können, müssen wir die Variablen JAVA_HOME
und JRE_HOME
umgebungsvariablen einrichten . Finden Sie den absoluten Pfad der ausführbaren JAVA-Datei in Ihrem System.
readlink -f $(which java)
Sie sehen eine ähnliche Ausgabe.
[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
Nun setzen JAVA_HOME
und JRE_HOME
Umgebungsvariable nach dem Pfad des Java - Verzeichnis.
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
Führen Sie die bash_profile
Datei aus.
source ~/.bash_profile
Jetzt können Sie den echo $JAVA_HOME
Befehl ausführen, um zu überprüfen, ob die Umgebungsvariable festgelegt ist.
[user@vultr ~]$ echo $JAVA_HOME
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.151-1.b12.el7_4.x86_64
Apache bietet PredictionIO-Quelldateien, die lokal heruntergeladen und kompiliert werden können. Erstellen Sie ein neues temporäres Verzeichnis, um die Quelldatei herunterzuladen und zu kompilieren.
mkdir /tmp/pio_sourcefiles && cd /tmp/pio_sourcefiles
Laden Sie das PredictionIO-Quelldateiarchiv von einer beliebigen Apache Mirror-Site herunter .
wget http://apache.mirror.vexxhost.com/incubator/predictionio/0.12.0-incubating/apache-predictionio-0.12.0-incubating.tar.gz
Extrahieren Sie das Archiv und kompilieren Sie die Quelle, um eine Distribution von PredictionIO zu erstellen.
tar xf apache-predictionio-0.12.0-incubating.tar.gz
./make-distribution.sh
Die obige Verteilung wird gegenüber den Standardversionen der Abhängigkeiten aufgebaut werden, die Scala 2.11.8
, Spark 2.1.1
, Hadoop 2.7.3
und ElasticSearch 5.5.2
. Warten Sie, bis der Build abgeschlossen ist. Je nach Leistung Ihres Systems dauert der Abschluss etwa zehn Minuten.
Hinweis : Es steht Ihnen frei, die neueste unterstützte Version der Abhängigkeiten zu verwenden. Während des Builds werden jedoch möglicherweise einige Warnungen angezeigt, da einige Funktionen möglicherweise veraltet sind. Führen Sie es aus ./make-distribution.sh -Dscala.version=2.11.11 -Dspark.version=2.1.2 -Dhadoop.version=2.7.4 -Delasticsearch.version=5.5.3
und ersetzen Sie die Versionsnummer entsprechend Ihrer Wahl.
Sobald der Build erfolgreich abgeschlossen wurde, wird am Ende die folgende Meldung angezeigt.
...
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
Die PredictionIO-Binärdateien werden im PredictionIO-0.12.0-incubating.tar.gz
Archiv gespeichert . Extrahieren Sie das Archiv im /opt
Verzeichnis und geben Sie dem aktuellen Benutzer den Besitz.
sudo tar xf PredictionIO-0.12.0-incubating.tar.gz -C /opt/
sudo chown -R $USER:$USER /opt/PredictionIO-0.12.0-incubating
Legen Sie die PIO_HOME
Umgebungsvariable fest.
echo "export PIO_HOME=/opt/PredictionIO-0.12.0-incubating" >> ~/.bash_profile
source ~/.bash_profile
Erstellen Sie ein neues Verzeichnis zu installieren PredictionIO Abhängigkeiten wie HBase
, Spark
und Elasticsearch
.
mkdir /opt/PredictionIO-0.12.0-incubating/vendors
Laden Sie Scala Version 2.11.8 herunter und extrahieren Sie es in das vendors
Verzeichnis.
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
Laden Sie Apache Hadoop Version 2.7.3 herunter und extrahieren Sie es in das vendors
Verzeichnis.
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 ist die Standardverarbeitungs-Engine für PredictionIO. Laden Sie Spark Version 2.1.1 herunter und extrahieren Sie es in das vendors
Verzeichnis.
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
Laden Sie Elasticsearch Version 5.5.2 herunter und extrahieren Sie es in das vendors
Verzeichnis.
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
Laden Sie abschließend HBase Version 1.2.6 herunter und extrahieren Sie es in das vendors
Verzeichnis.
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
Öffnen Sie die hbase-site.xml
Konfigurationsdatei, um HBase für die Arbeit in einer eigenständigen Umgebung zu konfigurieren.
nano /opt/PredictionIO-0.12.0-incubating/vendors/hbase-1.2.6/conf/hbase-site.xml
Suchen Sie den leeren Konfigurationsblock und ersetzen Sie ihn durch die folgende Konfiguration.
<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>
Das Datenverzeichnis wird automatisch von HBase erstellt. Bearbeiten Sie die HBase-Umgebungsdatei, um den JAVA_HOME
Pfad festzulegen .
nano /opt/PredictionIO-0.12.0-incubating/vendors/hbase-1.2.6/conf/hbase-env.sh
Kommentieren Sie Zeile 27 aus und setzen Sie JAVA_HOME
den Pfad jre
Ihrer Java-Installation. Den Pfad zur ausführbaren JAVA-Datei finden Sie mit dem readlink -f $(which java)
Befehl.
# 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
Kommentieren Sie auch die Zeilennummern 46 und 47 aus, da diese für JAVA 8 nicht erforderlich sind.
# 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"
Die Standardkonfiguration in der PredictionIO-Umgebungsdatei pio-env.sh
setzt voraus, dass wir PostgreSQL oder MySQL verwenden. Da wir HBase und Elasticsearch verwendet haben, müssen wir fast jede Konfiguration in der Datei ändern. Am besten erstellen Sie eine Sicherungskopie der vorhandenen Datei und erstellen eine neue PredictionIO-Umgebungsdatei.
mv /opt/PredictionIO-0.12.0-incubating/conf/pio-env.sh /opt/PredictionIO-0.12.0-incubating/conf/pio-env.sh.bak
Erstellen Sie nun eine neue Datei für die PredictionIO-Umgebungskonfiguration.
nano /opt/PredictionIO-0.12.0-incubating/conf/pio-env.sh
Füllen Sie die Datei mit der folgenden Konfiguration.
# 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
Speichern Sie die Datei und beenden Sie den Editor.
Öffnen Sie die Elasticsearch-Konfigurationsdatei.
nano /opt/PredictionIO-0.12.0-incubating/vendors/elasticsearch-5.5.2/config/elasticsearch.yml
Kommentieren Sie die Zeile aus und setzen Sie den Clusternamen auf den gleichen Namen wie in der PredictionIO-Umgebungsdatei. Der Clustername ist pio
in der obigen Konfiguration festgelegt.
# Use a descriptive name for your cluster:
#
cluster.name: pio
Fügen Sie nun das $PIO_HOME/bin
Verzeichnis zur Variablen PATH hinzu, damit die ausführbaren PredictionIO-Dateien direkt ausgeführt werden.
echo "export PATH=$PATH:$PIO_HOME/bin" >> ~/.bash_profile
source ~/.bash_profile
Zu diesem Zeitpunkt ist PredictionIO erfolgreich auf Ihrem Server installiert.
Sie können alle Dienste in PredictionIO wie Elasticsearch, HBase und Event Server mit einem einzigen Befehl starten.
pio-start-all
Sie sehen die folgende Ausgabe.
[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...
Verwenden Sie den folgenden Befehl, um den Status des PredictionIO-Servers zu überprüfen.
pio status
Sie sehen die folgende Ausgabe.
[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.
Wie wir in den obigen Meldungen sehen können, ist unser System bereit, eine Engine-Vorlage zu implementieren und Daten vorherzusagen.
In der PredictionIO- Vorlagengalerie stehen mehrere gebrauchsfertige Engine-Vorlagen zur Verfügung, die einfach auf dem PredictionIO-Server installiert werden können. Sie können die Liste der Engine-Vorlagen durchsuchen, um diejenige zu finden, die Ihren Anforderungen entspricht, oder Sie können Ihre eigene Engine schreiben.
In diesem Tutorial implementieren wir die E-Commerce Recommendation
Engine-Vorlage, um die Funktionalität des PredictionIO-Servers anhand einiger Beispieldaten zu demonstrieren. Diese Engine-Vorlage bietet einem Benutzer auf einer E-Commerce-Website eine persönliche Empfehlung. Standardmäßig verfügt es über Funktionen wie das Ausschließen nicht vorrätiger Artikel oder das Bereitstellen von Empfehlungen an einen Benutzer, der sich nach dem Training des Modells anmeldet. Außerdem übernimmt die Engine-Vorlage standardmäßig die Ansicht eines Benutzers und kauft Ereignisse, Elemente mit Kategorien und Eigenschaften sowie eine Liste nicht verfügbarer Elemente. Sobald die Engine geschult und bereitgestellt wurde, können Sie eine Abfrage mit der Benutzer-ID und der Anzahl der zu empfehlenden Elemente senden. Die generierte Ausgabe ist eine Rangliste der empfohlenen Artikel-IDs.
Installieren Sie Git, da es zum Klonen des Repositorys verwendet wird.
cd ~
sudo yum -y install git
Klonen Sie die E-Commerce Recommender-Engine-Vorlage auf Ihrem System.
git clone https://github.com/apache/incubator-predictionio-template-ecom-recommender.git MyEComRecomm
Erstellen Sie eine neue Anwendung für die E-Commerce-Empfehlungsvorlagen-Engine. Jede Anwendung in PredictionIO wird verwendet, um die Daten für eine separate Website zu speichern. Wenn Sie mehrere Websites haben, können Sie mehrere Apps erstellen, um die Daten jeder Website in einer anderen Anwendung zu speichern. Sie können einen beliebigen Namen für Ihre Bewerbung wählen.
cd MyEComRecomm/
pio app new myecom
Sie sehen die folgende Ausgabe.
[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
Die obige Ausgabe enthält auch den Zugriffsschlüssel, der zur Authentifizierung beim Senden der Eingabedaten an den Ereignisserver verwendet wird.
Sie können den Zugriffsschlüssel immer zusammen mit der Liste der verfügbaren Anwendungen finden, indem Sie ihn ausführen.
pio app list
Die folgende Ausgabe enthält eine Liste der Anwendungen und den Zugriffsschlüssel.
[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).
Nachdem wir eine neue Anwendung erstellt haben, werden wir einige Daten hinzufügen. In der Produktionsumgebung möchten Sie die Daten automatisch an den Ereignisserver senden, indem Sie die Ereignisserver-API in die Anwendung integrieren. Um zu erfahren, wie PredictionIO funktioniert, werden einige Beispieldaten importiert. Die Template-Engine bietet ein Python-Skript, mit dem die Beispieldaten einfach in den Ereignisserver importiert werden können.
Installieren Sie Python pip.
sudo yum -y install python-pip
sudo pip install --upgrade pip
Installieren Sie das PredictionIO Python SDK mit pip.
sudo pip install predictionio
Führen Sie das Python-Skript aus, um die Beispieldaten zum Ereignisserver hinzuzufügen.
python data/import_eventserver.py --access_key a_DnDr4uyvjsKRldPoJAFMuPvb-QBz-BhUFyGehXoTKbm89r00Gx4ygnqspTJx4t
Stellen Sie sicher, dass Sie den Zugangsschlüssel durch Ihren tatsächlichen Zugangsschlüssel ersetzen. Sie sehen eine ähnliche Ausgabe.
[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.
Das obige Skript importiert 10 Benutzer, 50 Artikel in 6 Kategorien und einige zufällige Kauf- und Ansichtsereignisse. Um zu überprüfen, ob die Ereignisse importiert wurden oder nicht, können Sie die folgende Abfrage ausführen.
curl -i -X GET "http://localhost:7070/events.json?accessKey=a_DnDr4uyvjsKRldPoJAFMuPvb-QBz-BhUFyGehXoTKbm89r00Gx4ygnqspTJx4t"
Die Ausgabe zeigt Ihnen die Liste aller importierten Ereignisse im JSON-Format.
Öffnen Sie nun die engine.json
Datei im Editor. Diese Datei enthält die Konfiguration der Engine.
nano engine.json
Suchen Sie beide Vorkommen von appName
und ersetzen Sie den Wert durch den tatsächlichen Namen der App, die Sie zuvor erstellt haben.
{
"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
}
}
]
}
Erstellen Sie die Anwendung.
pio build --verbose
Wenn Sie die Protokollmeldungen nicht sehen möchten, entfernen Sie die --verbose
Option. Das erstmalige Erstellen der Engine-Vorlage dauert einige Minuten. Sie sehen eine ähnliche Ausgabe, wenn der Build erfolgreich abgeschlossen wurde.
[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.
Trainieren Sie jetzt den Motor. Während des Trainings analysiert der Motor den Datensatz und trainiert sich gemäß dem bereitgestellten Algorithmus.
pio train
Bevor wir die Anwendung bereitstellen, müssen wir den Port öffnen, 8000
damit der Status der Anwendung auf der Web-GUI angezeigt werden kann. Außerdem senden und empfangen die Websites und Anwendungen, die den Ereignisserver verwenden, ihre Anfragen über diesen Port.
sudo firewall-cmd --zone=public --permanent --add-port=8000/tcp
sudo firewall-cmd --reload
Jetzt können Sie die PredictionIO-Engine bereitstellen.
pio deploy
Mit dem obigen Befehl werden die Engine und der integrierte Webserver am Port bereitgestellt, 8000
um auf die Anfragen von E-Commerce-Websites und -Anwendungen zu antworten. Die folgende Ausgabe wird am Ende angezeigt, sobald die Engine erfolgreich bereitgestellt wurde.
[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.
Sie können den Status der Engine überprüfen, http://192.0.2.1:8000
indem Sie einen modernen Browser verwenden. 192.0.2.1
Stellen Sie sicher, dass Sie durch Ihre tatsächliche Vultr-IP-Adresse ersetzen .
Dies bedeutet, dass die Engine-Vorlage für die E-Commerce-Empfehlung bereitgestellt wird und erfolgreich ausgeführt wird. Sie können die Engine-Vorlage abfragen, um fünf Empfehlungen für den Benutzer abzurufen, u5
indem Sie die folgende Abfrage in einer neuen Terminalsitzung ausführen.
curl -H "Content-Type: application/json" \
-d '{ "user": "u5", "num": 5 }' \
http://localhost:8000/queries.json
Sie sehen die generierten Empfehlungen für den Benutzer 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}]}
Herzlichen Glückwunsch, Apache PredictionIO wurde erfolgreich auf Ihrem Server bereitgestellt. Sie können jetzt die API des Ereignisservers verwenden, um die Daten in die Engine zu importieren und die Empfehlungen für den Benutzer vorherzusagen. Wenn Sie möchten, können Sie einige andere Vorlagen aus der Vorlagengalerie verwenden. Lesen Sie unbedingt die Vorlage für die Universal Recommender- Engine, die in fast allen Anwendungsfällen verwendet werden kann, einschließlich E-Commerce, Nachrichten oder Videos.
Verwenden Sie ein anderes System? MODX Revolution ist ein schnelles, flexibles, skalierbares, kostenloses und Open-Source-Content-Management-System (CMS) für Unternehmen, das i
Vultr bietet Ihnen eine hervorragende Konnektivität für private Netzwerke für Server, die am selben Standort ausgeführt werden. Aber manchmal möchten Sie zwei Server in verschiedenen Ländern
Verwenden Sie ein anderes System? Einführung CyberPanel ist eines der ersten Control Panels auf dem Markt, das sowohl Open Source als auch OpenLiteSpeed verwendet. Was ist das?
Verwenden Sie ein anderes System? ESpeak kann TTS-Audiodateien (Text-to-Speech) generieren. Diese können aus vielen Gründen nützlich sein, z. B. um Ihr eigenes Turin zu erstellen
Verwenden Sie ein anderes System? Thelia ist ein Open-Source-Tool zum Erstellen von E-Business-Websites und zum Verwalten von Online-Inhalten, die in PHP geschrieben wurden. Thelia Quellcode i
Cockpit ist ein kostenloses Open Source-Programm für die Linux-Serververwaltung. Es ist sehr leicht und hat eine schöne, einfach zu bedienende Weboberfläche. Es erlaubt System
Gollum ist die Git-basierte Wiki-Software, die als Backend des GitHub-Wikis verwendet wird. Durch die Bereitstellung von Gollum können Sie ein GitHub-ähnliches Wiki-System auf Ihnen hosten
BBR (Bottleneck Bandwidth and RTT) ist ein neuer Algorithmus zur Überlastungskontrolle, der von Google zum Linux-Kernel-TCP-Stack hinzugefügt wird. Mit BBR an Ort und Stelle,
YOURLS (Your Own URL Shortener) ist eine Open-Source-Anwendung zur URL-Verkürzung und Datenanalyse. In diesem Artikel werden wir den Installationsprozess behandeln
Verwenden Sie ein anderes System? RTMP eignet sich hervorragend für die Bereitstellung von Live-Inhalten. Wenn RTMP mit FFmpeg gekoppelt ist, können Streams in verschiedene Qualitäten konvertiert werden. Vultr i
LimeSurvey ist ein kostenloses und Open-Source-Online-Umfragetool, das häufig zum Veröffentlichen von Online-Umfragen und zum Sammeln von Umfrage-Feedback verwendet wird. In diesem Artikel werde ich
Einführung Java ist eine beliebte Softwareplattform, mit der Sie Java-Anwendungen und -Applets in verschiedenen Hardwareumgebungen entwickeln und ausführen können. Es gibt
Verwenden Sie ein anderes System? Netdata ist ein aufstrebender Stern im Bereich der Echtzeitüberwachung von Systemmetriken. Im Vergleich zu anderen Tools der gleichen Art bietet Netdata:
In diesem Tutorial erfahren Sie, wie Sie einen Just Cause 2-Multiplayer-Server einrichten. Voraussetzungen Bitte stellen Sie sicher, dass das System vollständig aktualisiert ist, bevor Sie beginnen
Verwenden Sie ein anderes System? In diesem Tutorial werde ich erklären, wie ein Starbound-Server unter CentOS 7 eingerichtet wird. Voraussetzungen Sie müssen dieses Spiel besitzen
ZNC ist ein kostenloser Open-Source-IRC-Bouncer, der permanent mit einem Netzwerk verbunden bleibt, sodass Clients Nachrichten empfangen können, die gesendet werden, während sie offline sind. Thi
Django ist ein beliebtes Python-Framework zum Schreiben von Webanwendungen. Mit Django können Sie Anwendungen schneller erstellen, ohne das Rad neu zu erfinden. Wenn du willst
ionCube Loader ist eine PHP-Erweiterung, mit der ein Webserver PHP-Dateien ausführen kann, die mit ionCube Encoder codiert wurden und für deren Ausführung erforderlich sind
Einführung Installieren Sie in diesem Tutorial PufferPanel auf unserem Vultr VPS. PufferPanel ist ein Open Source-Bedienfeld, das Sie kostenlos verwalten können
Verwenden Sie ein anderes System? Einführung BoltWire ist ein kostenloses und leichtes Content-Management-System, das in PHP geschrieben wurde. Im Vergleich zu den meisten anderen Content Managern
Ransomware-Angriffe nehmen zu, aber kann KI helfen, den neuesten Computervirus zu bekämpfen? Ist KI die Antwort? Lesen Sie hier, ob KI boone oder bane ist
ReactOS, ein quelloffenes und kostenloses Betriebssystem, ist hier mit der neuesten Version. Kann es den Anforderungen moderner Windows-Benutzer genügen und Microsoft zu Fall bringen? Lassen Sie uns mehr über dieses alte, aber neuere Betriebssystem erfahren.
Whatsapp hat endlich die Desktop-App für Mac- und Windows-Benutzer auf den Markt gebracht. Jetzt können Sie ganz einfach von Windows oder Mac auf WhatsApp zugreifen. Verfügbar für Windows 8+ und Mac OS 10.9+
Lesen Sie dies, um zu erfahren, wie Künstliche Intelligenz bei kleinen Unternehmen beliebt wird und wie sie die Wahrscheinlichkeit erhöht, sie wachsen zu lassen und ihren Konkurrenten einen Vorsprung zu verschaffen.
Vor kurzem hat Apple macOS Catalina 10.15.4 als Ergänzungsupdate veröffentlicht, um Probleme zu beheben, aber es scheint, dass das Update mehr Probleme verursacht, die zum Bricking von Mac-Computern führen. Lesen Sie diesen Artikel, um mehr zu erfahren
13 Tools zur kommerziellen Datenextraktion von Big Data
Unser Computer speichert alle Daten in einer organisierten Weise, die als Journaling-Dateisystem bekannt ist. Es ist eine effiziente Methode, die es dem Computer ermöglicht, Dateien zu suchen und anzuzeigen, sobald Sie auf die Suche klicken.https://wethegeek.com/?p=94116&preview=true
Da sich die Wissenschaft schnell weiterentwickelt und einen Großteil unserer Bemühungen übernimmt, steigt auch das Risiko, uns einer unerklärlichen Singularität auszusetzen. Lesen Sie, was Singularität für uns bedeuten könnte.
Ein Einblick in 26 Big-Data-Analysetechniken: Teil 1
KI im Gesundheitswesen hat in den letzten Jahrzehnten große Fortschritte gemacht. Somit wächst die Zukunft der KI im Gesundheitswesen immer noch von Tag zu Tag.