predictionio-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From don...@apache.org
Subject [06/51] [partial] incubator-predictionio-site git commit: Initial doc site
Date Wed, 20 Jul 2016 19:09:41 GMT
http://git-wip-us.apache.org/repos/asf/incubator-predictionio-site/blob/92a45fa4/templates/classification/quickstart/index.html
----------------------------------------------------------------------
diff --git a/templates/classification/quickstart/index.html b/templates/classification/quickstart/index.html
new file mode 100644
index 0000000..26b2e0c
--- /dev/null
+++ b/templates/classification/quickstart/index.html
@@ -0,0 +1,622 @@
+<!DOCTYPE html><html><head><title>Quick Start - Classification Engine Template</title><meta charset="utf-8"/><meta content="IE=edge,chrome=1" http-equiv="X-UA-Compatible"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><meta class="swiftype" name="title" data-type="string" content="Quick Start - Classification Engine Template"/><link rel="canonical" href="https://docs.prediction.io/templates/classification/quickstart/"/><link href="/images/favicon/normal-b330020a.png" rel="shortcut icon"/><link href="/images/favicon/apple-c0febcf2.png" rel="apple-touch-icon"/><link href="//fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800" rel="stylesheet"/><link href="//maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css" rel="stylesheet"/><link href="/stylesheets/application-3598c7d7.css" rel="stylesheet" type="text/css"/><!--[if lt IE 9]><script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7
 .2/html5shiv.min.js"></script><![endif]--><script src="//cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script><script>(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+
+ga('create', 'UA-38306178-1', 'auto');
+ga('require', 'linkid', 'linkid.js');
+ga('send', 'pageview');</script><script>!function(){var analytics=window.analytics=window.analytics||[];if(!analytics.initialize)if(analytics.invoked)window.console&&console.error&&console.error("Segment snippet included twice.");else{analytics.invoked=!0;analytics.methods=["trackSubmit","trackClick","trackLink","trackForm","pageview","identify","group","track","ready","alias","page","once","off","on"];analytics.factory=function(t){return function(){var e=Array.prototype.slice.call(arguments);e.unshift(t);analytics.push(e);return analytics}};for(var t=0;t<analytics.methods.length;t++){var e=analytics.methods[t];analytics[e]=analytics.factory(e)}analytics.load=function(t){var e=document.createElement("script");e.type="text/javascript";e.async=!0;e.src=("https:"===document.location.protocol?"https://":"http://")+"cdn.segment.com/analytics.js/v1/"+t+"/analytics.min.js";var n=document.getElementsByTagName("script")[0];n.parentNode.insertBefore(e,n)};analytics.SNIPPET_VERSION="3.0.1";
+  analytics.load("YlF3updaI3DR96hnNgSGpR3PPBUGDzt8");
+  analytics.page()
+  }}();</script><script>RCX_CUSTOM_LIB="https://cdn.recontext.com/staging/rcx.min.js";
+(function(b,d,a){b.RCX_OBJECT=a;a=b[a]||[];if(!a.snipV&&!a.libV){b.rcx=a;a.snipV="0.2.0";var g=function(a,b,c,d){a[b]=a[b]||function(){c.push([d].concat(Array.prototype.slice.call(arguments)))}};b="init page track identify link setUserProperty unsetUserProperty".split(" ");for(var f=0;f<b.length;f++){var e,c;e=b[f];c=e.split(".");2==c.length?(a[c[0]]=a[c[0]]||[],g(a[c[0]],c[1],a,e)):g(a,e,a,e)}a=d.createElement("script");a.type="text/javascript";a.async=!0;a.src="undefined"!==typeof RCX_CUSTOM_LIB?
+RCX_CUSTOM_LIB:"https://cdn.recontext.com/rcx.min.js";d=d.getElementsByTagName("script")[0];d.parentNode.insertBefore(a,d)}})(window,document,"rcx");
+rcx.init("kTxFcI3IWdXYfRsh6uuYuej4qYl8m8LVMePM2hdIkM9YjHqkAFC6mqdqO9fpp8p9");
+rcx.page();</script><script>function t(e){analytics.identify(e); analytics.track("newsletter signup");
+  rcx.track("newsletter signup", { '_email': e });}</script><script>!function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod?
+n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n;
+n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0;
+t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window,
+document,'script','//connect.facebook.net/en_US/fbevents.js');
+
+fbq('init', '1073028432707778');
+fbq('track', "PageView");</script><script src="//use.typekit.net/mut4mjx.js"></script><script>try{Typekit.load();}catch(e){}</script></head><body><div id="global"><header><div class="container" id="header-wrapper"><div class="row"><div class="col-sm-12"><div id="logo-wrapper"><span id="drawer-toggle"></span><a href="#"></a><a href="http://prediction.io/"><img alt="PredictionIO" id="logo" src="/images/logos/logo-ee2b9bb3.png"/></a></div><div id="menu-wrapper"><div id="header-nav-options-wrapper"><ul><li><a href="/">Install & Doc</a></li> <li><a href="/support">Support</a></li> </ul></div><div id="pill-wrapper"><a class="pill left" href="//templates.prediction.io/">TEMPLATES</a> <a class="pill right" href="//github.com/PredictionIO/PredictionIO/">OPEN SOURCE</a></div></div><img class="mobile-search-bar-toggler hidden-md hidden-lg" src="/images/icons/search-glass-704bd4ff.png"/></div></div></div></header><div id="search-bar-row-wrapper"><div class="container-fluid" id="search-bar-row">
 <div class="row"><div class="col-md-9 col-sm-11 col-xs-11"><div class="hidden-md hidden-lg" id="mobile-page-heading-wrapper"><p>PredictionIO Docs</p><h4>Quick Start - Classification Engine Template</h4></div><h4 class="hidden-sm hidden-xs">PredictionIO Docs</h4></div><div class="col-md-3 col-sm-1 col-xs-1 hidden-md hidden-lg"><img id="left-menu-indicator" src="/images/icons/down-arrow-dfe9f7fe.png"/></div><div class="col-md-3 col-sm-12 col-xs-12 swiftype-wrapper"><div class="swiftype"><form class="search-form"><img class="search-box-toggler hidden-xs hidden-sm" src="/images/icons/search-glass-704bd4ff.png"/><div class="search-box"><img src="/images/icons/search-glass-704bd4ff.png"/><input type="text" id="st-search-input" class="st-search-input" placeholder="Search Doc..."/></div><img class="swiftype-row-hider hidden-md hidden-lg" src="/images/icons/drawer-toggle-active-fcbef12a.png"/></form></div></div><div class="mobile-left-menu-toggler hidden-md hidden-lg"></div></div></div></div
 ><div id="page" class="container-fluid"><div class="row"><div id="left-menu-wrapper" class="col-md-3"><nav id="nav-main"><ul><li class="level-1"><a class="expandible" href="/"><span>Apache PredictionIO (incubating) Documentation</span></a><ul><li class="level-2"><a class="final" href="/"><span>Welcome to Apache PredictionIO (incubating)</span></a></li></ul></li><li class="level-1"><a class="expandible" href="#"><span>Getting Started</span></a><ul><li class="level-2"><a class="final" href="/start/"><span>A Quick Intro</span></a></li><li class="level-2"><a class="final" href="/install/"><span>Installing Apache PredictionIO (incubating)</span></a></li><li class="level-2"><a class="final" href="/start/download/"><span>Downloading an Engine Template</span></a></li><li class="level-2"><a class="final" href="/start/deploy/"><span>Deploying Your First Engine</span></a></li><li class="level-2"><a class="final" href="/start/customize/"><span>Customizing the Engine</span></a></li></ul></li><li
  class="level-1"><a class="expandible" href="#"><span>Integrating with Your App</span></a><ul><li class="level-2"><a class="final" href="/appintegration/"><span>App Integration Overview</span></a></li><li class="level-2"><a class="expandible" href="/sdk/"><span>List of SDKs</span></a><ul><li class="level-3"><a class="final" href="/sdk/java/"><span>Java & Android SDK</span></a></li><li class="level-3"><a class="final" href="/sdk/php/"><span>PHP SDK</span></a></li><li class="level-3"><a class="final" href="/sdk/python/"><span>Python SDK</span></a></li><li class="level-3"><a class="final" href="/sdk/ruby/"><span>Ruby SDK</span></a></li><li class="level-3"><a class="final" href="/sdk/community/"><span>Community Powered SDKs</span></a></li></ul></li></ul></li><li class="level-1"><a class="expandible" href="#"><span>Deploying an Engine</span></a><ul><li class="level-2"><a class="final" href="/deploy/"><span>Deploying as a Web Service</span></a></li><li class="level-2"><a class="final" hre
 f="/cli/#engine-commands"><span>Engine Command-line Interface</span></a></li><li class="level-2"><a class="final" href="/deploy/engineparams/"><span>Setting Engine Parameters</span></a></li><li class="level-2"><a class="final" href="/deploy/enginevariants/"><span>Deploying Multiple Engine Variants</span></a></li></ul></li><li class="level-1"><a class="expandible" href="#"><span>Customizing an Engine</span></a><ul><li class="level-2"><a class="final" href="/customize/"><span>Learning DASE</span></a></li><li class="level-2"><a class="final" href="/customize/dase/"><span>Implement DASE</span></a></li><li class="level-2"><a class="final" href="/customize/troubleshooting/"><span>Troubleshooting Engine Development</span></a></li><li class="level-2"><a class="final" href="/api/current/#package"><span>Engine Scala APIs</span></a></li></ul></li><li class="level-1"><a class="expandible" href="#"><span>Collecting and Analyzing Data</span></a><ul><li class="level-2"><a class="final" href="/data
 collection/"><span>Event Server Overview</span></a></li><li class="level-2"><a class="final" href="/cli/#event-server-commands"><span>Event Server Command-line Interface</span></a></li><li class="level-2"><a class="final" href="/datacollection/eventapi/"><span>Collecting Data with REST/SDKs</span></a></li><li class="level-2"><a class="final" href="/datacollection/eventmodel/"><span>Events Modeling</span></a></li><li class="level-2"><a class="final" href="/datacollection/webhooks/"><span>Unifying Multichannel Data with Webhooks</span></a></li><li class="level-2"><a class="final" href="/datacollection/channel/"><span>Channel</span></a></li><li class="level-2"><a class="final" href="/datacollection/batchimport/"><span>Importing Data in Batch</span></a></li><li class="level-2"><a class="final" href="/datacollection/analytics/"><span>Using Analytics Tools</span></a></li></ul></li><li class="level-1"><a class="expandible" href="#"><span>Choosing an Algorithm(s)</span></a><ul><li class="le
 vel-2"><a class="final" href="/algorithm/"><span>Built-in Algorithm Libraries</span></a></li><li class="level-2"><a class="final" href="/algorithm/switch/"><span>Switching to Another Algorithm</span></a></li><li class="level-2"><a class="final" href="/algorithm/multiple/"><span>Combining Multiple Algorithms</span></a></li><li class="level-2"><a class="final" href="/algorithm/custom/"><span>Adding Your Own Algorithms</span></a></li></ul></li><li class="level-1"><a class="expandible" href="#"><span>ML Tuning and Evaluation</span></a><ul><li class="level-2"><a class="final" href="/evaluation/"><span>Overview</span></a></li><li class="level-2"><a class="final" href="/evaluation/paramtuning/"><span>Hyperparameter Tuning</span></a></li><li class="level-2"><a class="final" href="/evaluation/evaluationdashboard/"><span>Evaluation Dashboard</span></a></li><li class="level-2"><a class="final" href="/evaluation/metricchoose/"><span>Choosing Evaluation Metrics</span></a></li><li class="level-2"
 ><a class="final" href="/evaluation/metricbuild/"><span>Building Evaluation Metrics</span></a></li></ul></li><li class="level-1"><a class="expandible" href="#"><span>System Architecture</span></a><ul><li class="level-2"><a class="final" href="/system/"><span>Architecture Overview</span></a></li><li class="level-2"><a class="final" href="/system/anotherdatastore/"><span>Using Another Data Store</span></a></li></ul></li><li class="level-1"><a class="expandible" href="#"><span>Engine Template Gallery</span></a><ul><li class="level-2"><a class="final" href="http://templates.prediction.io"><span>Browse</span></a></li><li class="level-2"><a class="final" href="/community/submit-template/"><span>Submit your Engine as a Template</span></a></li></ul></li><li class="level-1"><a class="expandible" href="#"><span>Demo Tutorials</span></a><ul><li class="level-2"><a class="final" href="/demo/tapster/"><span>Comics Recommendation Demo</span></a></li><li class="level-2"><a class="final" href="/demo
 /community/"><span>Community Contributed Demo</span></a></li><li class="level-2"><a class="final" href="/demo/textclassification/"><span>Text Classification Engine Tutorial</span></a></li></ul></li><li class="level-1"><a class="expandible" href="/community/"><span>Getting Involved</span></a><ul><li class="level-2"><a class="final" href="/community/contribute-code/"><span>Contribute Code</span></a></li><li class="level-2"><a class="final" href="/community/contribute-documentation/"><span>Contribute Documentation</span></a></li><li class="level-2"><a class="final" href="/community/contribute-sdk/"><span>Contribute a SDK</span></a></li><li class="level-2"><a class="final" href="/community/contribute-webhook/"><span>Contribute a Webhook</span></a></li><li class="level-2"><a class="final" href="/community/projects/"><span>Community Projects</span></a></li></ul></li><li class="level-1"><a class="expandible" href="#"><span>Getting Help</span></a><ul><li class="level-2"><a class="final" hre
 f="/resources/faq/"><span>FAQs</span></a></li><li class="level-2"><a class="final" href="/support/"><span>Community Support</span></a></li><li class="level-2"><a class="final" href="/support/#enterprise-support"><span>Enterprise Support</span></a></li></ul></li><li class="level-1"><a class="expandible" href="#"><span>Resources</span></a><ul><li class="level-2"><a class="final" href="/resources/intellij/"><span>Developing Engines with IntelliJ IDEA</span></a></li><li class="level-2"><a class="final" href="/resources/upgrade/"><span>Upgrade Instructions</span></a></li><li class="level-2"><a class="final" href="/resources/glossary/"><span>Glossary</span></a></li></ul></li></ul></nav></div><div class="col-md-9 col-sm-12"><div class="content-header hidden-md hidden-lg"><div id="page-title"><h1>Quick Start - Classification Engine Template</h1></div></div><div id="table-of-content-wrapper"><h5>On this page</h5><aside id="table-of-contents"><ul> <li> <a href="#overview">Overview</a> </li> <
 li> <a href="#usage">Usage</a> </li> <li> <a href="#1-install-and-run-predictionio">1. Install and Run PredictionIO</a> </li> <li> <a href="#2-create-a-new-engine-from-an-engine-template">2. Create a new Engine from an Engine Template</a> </li> <li> <a href="#3-generate-an-app-id-and-access-key">3. Generate an App ID and Access Key</a> </li> <li> <a href="#4-collecting-data">4. Collecting Data</a> </li> <li> <a href="#5-deploy-the-engine-as-a-service">5. Deploy the Engine as a Service</a> </li> <li> <a href="#6-use-the-engine">6. Use the Engine</a> </li> </ul> </aside><hr/><a id="edit-page-link" href="https://github.com/apache/incubator-predictionio/tree/livedoc/docs/manual/source/templates/classification/quickstart.html.md.erb"><img src="/images/icons/edit-pencil-d6c1bb3d.png"/>Edit this page</a></div><div class="content-header hidden-sm hidden-xs"><div id="page-title"><h1>Quick Start - Classification Engine Template</h1></div></div><div class="content"><h2 id='overview' class='hea
 der-anchors'>Overview</h2><p>An engine template is an almost-complete implementation of an engine. PredictionIO&#39;s Classification Engine Template has integrated <strong>Apache Spark MLlib</strong>&#39;s Naive Bayes algorithm by default.</p><p>The default use case of Classification Engine Template is to predict the service plan (<em>plan</em>) a user will subscribe to based on his 3 properties: <em>attr0</em>, <em>attr1</em> and <em>attr2</em>.</p><p>You can customize it easily to fit your specific use case and needs.</p><p>We are going to show you how to create your own classification engine for production use based on this template.</p><h2 id='usage' class='header-anchors'>Usage</h2><h3 id='event-data-requirements' class='header-anchors'>Event Data Requirements</h3><p>By default, the template requires the following events to be collected:</p> <ul> <li>user $set event, which set the attributes of the user</li> </ul> <div class="alert-message note"><p>You can customize to use othe
 r event.</p></div><h3 id='input-query' class='header-anchors'>Input Query</h3> <ul> <li>individual attributes values (for version &gt;= v0.3.1)</li> </ul> <div class="alert-message warning"><p>for version &lt; v0.3.1, it is array of features values</p></div><h3 id='output-predictedresult' class='header-anchors'>Output PredictedResult</h3> <ul> <li>the predicted label</li> </ul> <h2 id='1.-install-and-run-predictionio' class='header-anchors'>1. Install and Run PredictionIO</h2><p>First you need to <a href="/install">install PredictionIO 0.9.6</a> (if you haven&#39;t done it).</p><p>Let&#39;s say you have installed PredictionIO at <code>/home/yourname/PredictionIO/</code>. For convenience, add PredictionIO&#39;s binary command path to your <code>PATH</code>, i.e. <code>/home/yourname/PredictionIO/bin</code>:</p><div class="highlight shell"><table style="border-spacing: 0"><tbody><tr><td class="gutter gl" style="text-align: right"><pre class="lineno">1</pre></td><td class="code"><pre><
 span class="gp">$ </span><span class="nv">PATH</span><span class="o">=</span><span class="nv">$PATH</span>:/home/yourname/PredictionIO/bin; <span class="nb">export </span>PATH
+</pre></td></tr></tbody></table> </div> <div class="alert-message note"><p>If you launched <strong>PredictionIO AWS instance</strong>, the path is located at <code>/opt/PredictionIO/bin</code>.</p></div><p>Once you have completed the installation process, please make sure all the components (PredictionIO Event Server, Elasticsearch, and HBase) are up and running.</p><div class="alert-message note"><p>If you launched <strong>PredictionIO AWS instance</strong>, you can skip <code>pio-start-all</code>. All components should have been started automatically.</p></div><p>If you are using PostgreSQL or MySQL, run the following to start PredictionIO Event Server:</p><div class="highlight shell"><table style="border-spacing: 0"><tbody><tr><td class="gutter gl" style="text-align: right"><pre class="lineno">1</pre></td><td class="code"><pre><span class="gp">$ </span>pio eventserver &amp;
+</pre></td></tr></tbody></table> </div> <p>If instead you are running HBase and Elasticsearch, run the following to start all PredictionIO Event Server, HBase, and Elasticsearch:</p><div class="highlight shell"><table style="border-spacing: 0"><tbody><tr><td class="gutter gl" style="text-align: right"><pre class="lineno">1</pre></td><td class="code"><pre><span class="gp">$ </span>pio-start-all
+</pre></td></tr></tbody></table> </div> <p>You can check the status by running:</p><div class="highlight shell"><table style="border-spacing: 0"><tbody><tr><td class="gutter gl" style="text-align: right"><pre class="lineno">1</pre></td><td class="code"><pre><span class="gp">$ </span>pio status
+</pre></td></tr></tbody></table> </div> <p>If everything is OK, you should see the following outputs:</p><div class="highlight shell"><table style="border-spacing: 0"><tbody><tr><td class="gutter gl" style="text-align: right"><pre class="lineno">1
+2
+3
+4</pre></td><td class="code"><pre>...
+
+<span class="o">(</span>sleeping 5 seconds <span class="k">for </span>all messages to show up...<span class="o">)</span>
+Your system is all ready to go.
+</pre></td></tr></tbody></table> </div> <div class="alert-message note"><p>To further troubleshoot, please see <a href="/resources/faq/#using-predictionio">FAQ - Using PredictionIO</a>.</p></div> <p><a href="#"></a></p> <h2 id='2.-create-a-new-engine-from-an-engine-template' class='header-anchors'>2. Create a new Engine from an Engine Template</h2><p>Now let&#39;s create a new engine called <em>MyClassification</em> by downloading the Classification Engine Template. Go to a directory where you want to put your engine and run the following:</p><div class="highlight shell"><table style="border-spacing: 0"><tbody><tr><td class="gutter gl" style="text-align: right"><pre class="lineno">1
+2</pre></td><td class="code"><pre><span class="gp">$ </span>pio template get PredictionIO/template-scala-parallel-classification MyClassification
+<span class="gp">$ </span><span class="nb">cd </span>MyClassification
+</pre></td></tr></tbody></table> </div> <p>A new directory <em>MyClassification</em> is created, where you can find the downloaded engine template.</p> <p><a href="#"></a></p> <h2 id='3.-generate-an-app-id-and-access-key' class='header-anchors'>3. Generate an App ID and Access Key</h2><p>You will need to create a new App in PredictionIO to store all the data of your app. The data collected will be used for machine learning modeling.</p><p>Let&#39;s assume you want to use this engine in an application named &quot;MyApp1&quot;. Run the following to create a new app &quot;MyApp1&quot;:</p><div class="highlight shell"><table style="border-spacing: 0"><tbody><tr><td class="gutter gl" style="text-align: right"><pre class="lineno">1</pre></td><td class="code"><pre><span class="gp">$ </span>pio app new MyApp1
+</pre></td></tr></tbody></table> </div> <p>You should find the following in the console output:</p><div class="highlight shell"><table style="border-spacing: 0"><tbody><tr><td class="gutter gl" style="text-align: right"><pre class="lineno">1
+2
+3
+4
+5
+6</pre></td><td class="code"><pre>...
+<span class="o">[</span>INFO] <span class="o">[</span>App<span class="nv">$]</span> Initialized Event Store <span class="k">for </span>this app ID: 1.
+<span class="o">[</span>INFO] <span class="o">[</span>App<span class="nv">$]</span> Created new app:
+<span class="o">[</span>INFO] <span class="o">[</span>App<span class="nv">$]</span>       Name: MyApp1
+<span class="o">[</span>INFO] <span class="o">[</span>App<span class="nv">$]</span>         ID: 1
+<span class="o">[</span>INFO] <span class="o">[</span>App<span class="nv">$]</span> Access Key: 3mZWDzci2D5YsqAnqNnXH9SB6Rg3dsTBs8iHkK6X2i54IQsIZI1eEeQQyMfs7b3F
+</pre></td></tr></tbody></table> </div> <p>Note that <em>App ID</em><em>, **Access Key</em>* are created for this App &quot;MyApp1&quot;. You will need the <strong>Access Key</strong> when you collect data with EventServer for this App.</p><p>You can list all of the apps created its corresponding ID and Access Key by running the following command:</p><div class="highlight shell"><table style="border-spacing: 0"><tbody><tr><td class="gutter gl" style="text-align: right"><pre class="lineno">1</pre></td><td class="code"><pre><span class="gp">$ </span>pio app list
+</pre></td></tr></tbody></table> </div> <p>You should see a list of apps created. For example:</p><div class="highlight shell"><table style="border-spacing: 0"><tbody><tr><td class="gutter gl" style="text-align: right"><pre class="lineno">1
+2
+3
+4</pre></td><td class="code"><pre><span class="o">[</span>INFO] <span class="o">[</span>App<span class="nv">$]</span>                 Name |   ID |                                                       Access Key | Allowed Event<span class="o">(</span>s<span class="o">)</span>
+<span class="o">[</span>INFO] <span class="o">[</span>App<span class="nv">$]</span>               MyApp1 |    1 | 3mZWDzci2D5YsqAnqNnXH9SB6Rg3dsTBs8iHkK6X2i54IQsIZI1eEeQQyMfs7b3F | <span class="o">(</span>all<span class="o">)</span>
+<span class="o">[</span>INFO] <span class="o">[</span>App<span class="nv">$]</span>               MyApp2 |    2 | io5lz6Eg4m3Xe4JZTBFE13GMAf1dhFl6ZteuJfrO84XpdOz9wRCrDU44EUaYuXq5 | <span class="o">(</span>all<span class="o">)</span>
+<span class="o">[</span>INFO] <span class="o">[</span>App<span class="nv">$]</span> Finished listing 2 app<span class="o">(</span>s<span class="o">)</span>.
+</pre></td></tr></tbody></table> </div> <p><a href="#"></a></p> <h2 id='4.-collecting-data' class='header-anchors'>4. Collecting Data</h2><p>Next, let&#39;s collect some training data. By default, the Classification Engine Template reads 4 properties of a user record: attr0, attr1, attr2 and plan. This templates requires &#39;$set&#39; user events.</p><div class="alert-message info"><p>This template can easily be customized to use different or more number of attributes.</p></div><p>You can send these events to PredictionIO Event Server in real-time easily by making a HTTP request or through the provided SDK. Please see <a href="/appintegration/">App Integration Overview</a> for more details how to integrate your app with SDK.</p><p>Let&#39;s try sending events to EventServer with the following <code>curl</code> commands (The corresponding SDK code is showed in other tabs).</p><p>Replace <code>&lt;ACCCESS_KEY&gt;</code> by the Access Key generated in above steps. Note that <code>loca
 lhost:7070</code> is the default URL of the Event Server.</p><p>For convenience, set your access key to the shell variable, run:</p><p><code>$ ACCESS_KEY=&lt;ACCESS_KEY&gt;</code></p> <p><a href="#"></a></p> <p>To set properties &quot;attr0&quot;, &quot;attr1&quot;, &quot;attr2&quot; and &quot;plan&quot; for user &quot;u0&quot; on time <code>2014-11-02T09:39:45.618-08:00</code> (current time will be used if eventTime is not specified), you can send <code>$set</code> event for the user. To send this event, run the following <code>curl</code> command:</p><div class="tabs"> <ul class="control"> <li data-lang="json"><a href="#tab-8379eb6c-a349-4450-af38-b4c0f4172242">REST API</a></li> <li data-lang="python"><a href="#tab-90c64ba8-ad3c-4767-a7d4-30c713a756c0">Python SDK</a></li> <li data-lang="php"><a href="#tab-80cd65cb-f968-4933-966f-1fae4510513e">PHP SDK</a></li> <li data-lang="ruby"><a href="#tab-8b7bbba8-1e88-417a-8286-058f04f00dfe">Ruby SDK</a></li> <li data-lang="java"><a href="#t
 ab-45e13392-b2b0-4095-bf33-4c586fe33a32">Java SDK</a></li> </ul> <div data-tab="REST API" data-lang="json" id="tab-8379eb6c-a349-4450-af38-b4c0f4172242"> <div class="highlight shell"> <table style="border-spacing: 0"><tbody><tr> <td class="gutter gl" style="text-align: right"><pre class="lineno">1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14</pre></td> <td class="code"><pre><span class="gp">$ </span>curl -i -X POST http://localhost:7070/events.json?accessKey<span class="o">=</span><span class="nv">$ACCESS_KEY</span> <span class="se">\</span>
+-H <span class="s2">"Content-Type: application/json"</span> <span class="se">\</span>
+-d <span class="s1">'{
+  "event" : "$set",
+  "entityType" : "user"
+  "entityId" : "u0",
+  "properties" : {
+    "attr0" : 0,
+    "attr1" : 1,
+    "attr2" : 0,
+    "plan" : 1
+  }
+  "eventTime" : "2014-11-02T09:39:45.618-08:00"
+}'</span>
+</pre></td> </tr></tbody></table> </div> </div> <div data-tab="Python SDK" data-lang="python" id="tab-90c64ba8-ad3c-4767-a7d4-30c713a756c0"> <div class="highlight python"> <table style="border-spacing: 0"><tbody><tr> <td class="gutter gl" style="text-align: right"><pre class="lineno">1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21</pre></td> <td class="code"><pre><span class="kn">import</span> <span class="nn">predictionio</span>
+
+<span class="n">client</span> <span class="o">=</span> <span class="n">predictionio</span><span class="o">.</span><span class="n">EventClient</span><span class="p">(</span>
+    <span class="n">access_key</span><span class="o">=&lt;</span><span class="n">ACCESS</span> <span class="n">KEY</span><span class="o">&gt;</span><span class="p">,</span>
+    <span class="n">url</span><span class="o">=&lt;</span><span class="n">URL</span> <span class="n">OF</span> <span class="n">EVENTSERVER</span><span class="o">&gt;</span><span class="p">,</span>
+    <span class="n">threads</span><span class="o">=</span><span class="mi">5</span><span class="p">,</span>
+    <span class="n">qsize</span><span class="o">=</span><span class="mi">500</span>
+<span class="p">)</span>
+
+<span class="c"># Set the 4 properties for a user</span>
+<span class="n">client</span><span class="o">.</span><span class="n">create_event</span><span class="p">(</span>
+    <span class="n">event</span><span class="o">=</span><span class="s">"$set"</span><span class="p">,</span>
+    <span class="n">entity_type</span><span class="o">=</span><span class="s">"user"</span><span class="p">,</span>
+    <span class="n">entity_id</span><span class="o">=&lt;</span><span class="n">USER</span> <span class="n">ID</span><span class="o">&gt;</span><span class="p">,</span>
+    <span class="n">properties</span><span class="o">=</span> <span class="p">{</span>
+      <span class="s">"attr0"</span> <span class="p">:</span> <span class="nb">int</span><span class="p">(</span><span class="o">&lt;</span><span class="n">VALUE</span> <span class="n">OF</span> <span class="n">ATTR0</span><span class="o">&gt;</span><span class="p">),</span>
+      <span class="s">"attr1"</span> <span class="p">:</span> <span class="nb">int</span><span class="p">(</span><span class="o">&lt;</span><span class="n">VALUE</span> <span class="n">OF</span> <span class="n">ATTR1</span><span class="o">&gt;</span><span class="p">),</span>
+      <span class="s">"attr2"</span> <span class="p">:</span> <span class="nb">int</span><span class="p">(</span><span class="o">&lt;</span><span class="n">VALUE</span> <span class="n">OF</span> <span class="n">ATTR2</span><span class="o">&gt;</span><span class="p">),</span>
+      <span class="s">"plan"</span> <span class="p">:</span> <span class="nb">int</span><span class="p">(</span><span class="o">&lt;</span><span class="n">VALUE</span> <span class="n">OF</span> <span class="n">PLAN</span><span class="o">&gt;</span><span class="p">)</span>
+    <span class="p">}</span>
+<span class="p">)</span>
+</pre></td> </tr></tbody></table> </div> </div> <div data-tab="PHP SDK" data-lang="php" id="tab-80cd65cb-f968-4933-966f-1fae4510513e"> <div class="highlight php"> <table style="border-spacing: 0"><tbody><tr> <td class="gutter gl" style="text-align: right"><pre class="lineno">1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19</pre></td> <td class="code"><pre><span class="cp">&lt;?php</span>
+<span class="k">require_once</span><span class="p">(</span><span class="s2">"vendor/autoload.php"</span><span class="p">);</span>
+<span class="k">use</span> <span class="nx">predictionio\EventClient</span><span class="p">;</span>
+
+<span class="nv">$client</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">EventClient</span><span class="p">(</span><span class="o">&lt;</span><span class="nx">ACCESS</span> <span class="nx">KEY</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">&lt;</span><span class="nx">URL</span> <span class="nx">OF</span> <span class="nx">EVENTSERVER</span><span class="o">&gt;</span><span class="p">);</span>
+
+<span class="c1">// Set the 4 properties for a user
+</span><span class="nv">$client</span><span class="o">-&gt;</span><span class="na">createEvent</span><span class="p">(</span><span class="k">array</span><span class="p">(</span>
+   <span class="s1">'event'</span> <span class="o">=&gt;</span> <span class="s1">'$set'</span><span class="p">,</span>
+   <span class="s1">'entityType'</span> <span class="o">=&gt;</span> <span class="s1">'user'</span><span class="p">,</span>
+   <span class="s1">'entityId'</span> <span class="o">=&gt;</span> <span class="o">&lt;</span><span class="nx">USER</span> <span class="nx">ID</span><span class="o">&gt;</span><span class="p">,</span>
+   <span class="s1">'properties'</span> <span class="o">=&gt;</span> <span class="k">array</span><span class="p">(</span>
+     <span class="s1">'attr0'</span> <span class="o">=&gt;</span> <span class="o">&lt;</span><span class="nx">VALUE</span> <span class="nx">OF</span> <span class="nx">ATTR0</span><span class="o">&gt;</span><span class="p">,</span>
+     <span class="s1">'attr1'</span> <span class="o">=&gt;</span> <span class="o">&lt;</span><span class="nx">VALUE</span> <span class="nx">OF</span> <span class="nx">ATTR1</span><span class="o">&gt;</span><span class="p">,</span>
+     <span class="s1">'attr2'</span> <span class="o">=&gt;</span> <span class="o">&lt;</span><span class="nx">VALUE</span> <span class="nx">OF</span> <span class="nx">ATTR2</span><span class="o">&gt;</span><span class="p">,</span>
+     <span class="s1">'plan'</span> <span class="o">=&gt;</span> <span class="o">&lt;</span><span class="nx">VALUE</span> <span class="nx">OF</span> <span class="nx">PLAN</span><span class="o">&gt;</span>
+   <span class="p">)</span>
+<span class="p">));</span>
+<span class="cp">?&gt;</span>
+</pre></td> </tr></tbody></table> </div> </div> <div data-tab="Ruby SDK" data-lang="ruby" id="tab-8b7bbba8-1e88-417a-8286-058f04f00dfe"> <div class="highlight ruby"> <table style="border-spacing: 0"><tbody><tr> <td class="gutter gl" style="text-align: right"><pre class="lineno">1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16</pre></td> <td class="code"><pre><span class="c1"># Create a client object.</span>
+<span class="n">client</span> <span class="o">=</span> <span class="no">PredictionIO</span><span class="o">::</span><span class="no">EventClient</span><span class="p">.</span><span class="nf">new</span><span class="p">(</span><span class="o">&lt;</span><span class="no">ACCESS</span> <span class="no">KEY</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">&lt;</span><span class="no">URL</span> <span class="no">OF</span> <span class="no">EVENTSERVER</span><span class="o">&gt;</span><span class="p">)</span>
+
+<span class="c1"># Set the 4 properties for a user.</span>
+<span class="n">client</span><span class="p">.</span><span class="nf">create_event</span><span class="p">(</span>
+  <span class="s1">'$set'</span><span class="p">,</span>
+  <span class="s1">'user'</span><span class="p">,</span>
+  <span class="o">&lt;</span><span class="no">USER</span> <span class="no">ID</span><span class="o">&gt;</span><span class="p">,</span> <span class="p">{</span>
+    <span class="s1">'properties'</span> <span class="o">=&gt;</span> <span class="p">{</span>
+      <span class="s1">'attr0'</span> <span class="o">=&gt;</span> <span class="o">&lt;</span><span class="no">VALUE</span> <span class="no">OF</span> <span class="no">ATTR0</span> <span class="p">(</span><span class="n">integer</span><span class="p">)</span><span class="o">&gt;</span><span class="p">,</span>
+      <span class="s1">'attr1'</span> <span class="o">=&gt;</span> <span class="o">&lt;</span><span class="no">VALUE</span> <span class="no">OF</span> <span class="no">ATTR1</span> <span class="p">(</span><span class="n">integer</span><span class="p">)</span><span class="o">&gt;</span><span class="p">,</span>
+      <span class="s1">'attr2'</span> <span class="o">=&gt;</span> <span class="o">&lt;</span><span class="no">VALUE</span> <span class="no">OF</span> <span class="no">ATTR2</span> <span class="p">(</span><span class="n">integer</span><span class="p">)</span><span class="o">&gt;</span><span class="p">,</span>
+      <span class="s1">'plan'</span> <span class="o">=&gt;</span> <span class="o">&lt;</span><span class="no">VALUE</span> <span class="no">OF</span> <span class="no">PLAN</span> <span class="p">(</span><span class="n">integer</span><span class="p">)</span><span class="o">&gt;</span><span class="p">,</span>
+    <span class="p">}</span>
+  <span class="p">}</span>
+<span class="p">)</span>
+</pre></td> </tr></tbody></table> </div> </div> <div data-tab="Java SDK" data-lang="java" id="tab-45e13392-b2b0-4095-bf33-4c586fe33a32"> <div class="highlight java"> <table style="border-spacing: 0"><tbody><tr> <td class="gutter gl" style="text-align: right"><pre class="lineno">1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18</pre></td> <td class="code"><pre><span class="kn">import</span> <span class="nn">com.google.common.collect.ImmutableMap</span><span class="o">;</span>
+<span class="kn">import</span> <span class="nn">io.prediction.Event</span><span class="o">;</span>
+<span class="kn">import</span> <span class="nn">io.prediction.EventClient</span><span class="o">;</span>
+
+<span class="n">EventClient</span> <span class="n">client</span> <span class="o">=</span> <span class="k">new</span> <span class="n">EventClient</span><span class="o">(&lt;</span><span class="n">ACCESS</span> <span class="n">KEY</span><span class="o">&gt;,</span> <span class="o">&lt;</span><span class="n">URL</span> <span class="n">OF</span> <span class="n">EVENTSERVER</span><span class="o">&gt;);</span>
+
+<span class="c1">// set the 4 properties for a user</span>
+<span class="n">Event</span> <span class="n">event</span> <span class="o">=</span> <span class="k">new</span> <span class="n">Event</span><span class="o">()</span>
+    <span class="o">.</span><span class="na">event</span><span class="o">(</span><span class="s">"$set"</span><span class="o">)</span>
+    <span class="o">.</span><span class="na">entityType</span><span class="o">(</span><span class="s">"user"</span><span class="o">)</span>
+    <span class="o">.</span><span class="na">entityId</span><span class="o">(&lt;</span><span class="n">USER</span> <span class="n">ID</span><span class="o">&gt;)</span>
+    <span class="o">.</span><span class="na">properties</span><span class="o">(</span><span class="n">ImmutableMap</span><span class="o">.&lt;</span><span class="n">String</span><span class="o">,</span> <span class="n">Object</span><span class="o">&gt;</span><span class="n">of</span><span class="o">(</span>
+        <span class="s">"attr0"</span><span class="o">,</span> <span class="o">&lt;</span><span class="n">VALUE</span> <span class="n">OF</span> <span class="n">ATTR0</span><span class="o">&gt;,</span>
+        <span class="s">"attr1"</span><span class="o">,</span> <span class="o">&lt;</span><span class="n">VALUE</span> <span class="n">OF</span> <span class="n">ATTR1</span><span class="o">&gt;,</span>
+        <span class="s">"attr2"</span><span class="o">,</span> <span class="o">&lt;</span><span class="n">VALUE</span> <span class="n">OF</span> <span class="n">ATTR2</span><span class="o">&gt;,</span>
+        <span class="s">"plan"</span><span class="o">,</span> <span class="o">&lt;</span><span class="n">VALUE</span> <span class="n">OF</span> <span class="n">PLAN</span><span class="o">&gt;</span>
+    <span class="o">));</span>
+<span class="n">client</span><span class="o">.</span><span class="na">createEvent</span><span class="o">(</span><span class="n">event</span><span class="o">);</span>
+</pre></td> </tr></tbody></table> </div> </div> </div> <p>Note that you can also set the properties for the user with multiple <code>$set</code> events (They will be aggregated during engine training).</p><p>To set properties &quot;attr0&quot;, &quot;attr1&quot; and &quot;attr2&quot;, and &quot;plan&quot; for user &quot;u1&quot; at different time, you can send follwing <code>$set</code> events for the user. To send these events, run the following <code>curl</code> command:</p><div class="tabs"> <ul class="control"> <li data-lang="json"><a href="#tab-7fb39be4-e550-4706-97c2-8a8f5869895f">REST API</a></li> <li data-lang="python"><a href="#tab-1f907cb6-be4c-4411-90fc-18c441ab06d9">Python SDK</a></li> <li data-lang="php"><a href="#tab-d4d47040-77b0-4d1c-8438-846c59b0e812">PHP SDK</a></li> <li data-lang="ruby"><a href="#tab-3c8dd7bc-0990-4a47-9437-deaacb7ba270">Ruby SDK</a></li> <li data-lang="java"><a href="#tab-b8376a13-843e-4c90-982b-911a2c71472a">Java SDK</a></li> </ul> <div data-tab
 ="REST API" data-lang="json" id="tab-7fb39be4-e550-4706-97c2-8a8f5869895f"> <div class="highlight shell"> <table style="border-spacing: 0"><tbody><tr> <td class="gutter gl" style="text-align: right"><pre class="lineno">1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36</pre></td> <td class="code"><pre><span class="gp">$ </span>curl -i -X POST http://localhost:7070/events.json?accessKey<span class="o">=</span><span class="nv">$ACCESS_KEY</span> <span class="se">\</span>
+-H <span class="s2">"Content-Type: application/json"</span> <span class="se">\</span>
+-d <span class="s1">'{
+  "event" : "$set",
+  "entityType" : "user"
+  "entityId" : "u1",
+  "properties" : {
+    "attr0" : 0
+  }
+  "eventTime" : "2014-11-02T09:39:45.618-08:00"
+}'</span>
+
+<span class="gp">$ </span>curl -i -X POST http://localhost:7070/events.json?accessKey<span class="o">=</span><span class="nv">$ACCESS_KEY</span> <span class="se">\</span>
+-H <span class="s2">"Content-Type: application/json"</span> <span class="se">\</span>
+-d <span class="s1">'{
+  "event" : "$set",
+  "entityType" : "user"
+  "entityId" : "u1",
+  "properties" : {
+    "attr1" : 1,
+    "attr2":  0
+  }
+  "eventTime" : "2014-11-02T09:39:45.618-08:00"
+}'</span>
+
+<span class="gp">$ </span>curl -i -X POST http://localhost:7070/events.json?accessKey<span class="o">=</span><span class="nv">$ACCESS_KEY</span> <span class="se">\</span>
+-H <span class="s2">"Content-Type: application/json"</span> <span class="se">\</span>
+-d <span class="s1">'{
+  "event" : "$set",
+  "entityType" : "user"
+  "entityId" : "u1",
+  "properties" : {
+    "plan" : 1
+  }
+  "eventTime" : "2014-11-02T09:39:45.618-08:00"
+}'</span>
+</pre></td> </tr></tbody></table> </div> </div> <div data-tab="Python SDK" data-lang="python" id="tab-1f907cb6-be4c-4411-90fc-18c441ab06d9"> <div class="highlight python"> <table style="border-spacing: 0"><tbody><tr> <td class="gutter gl" style="text-align: right"><pre class="lineno">1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27</pre></td> <td class="code"><pre><span class="c"># You may also set the properties one by one</span>
+<span class="n">client</span><span class="o">.</span><span class="n">create_event</span><span class="p">(</span>
+    <span class="n">event</span><span class="o">=</span><span class="s">"$set"</span><span class="p">,</span>
+    <span class="n">entity_type</span><span class="o">=</span><span class="s">"user"</span><span class="p">,</span>
+    <span class="n">entity_id</span><span class="o">=&lt;</span><span class="n">USER</span> <span class="n">ID</span><span class="o">&gt;</span><span class="p">,</span>
+    <span class="n">properties</span><span class="o">=</span> <span class="p">{</span>
+      <span class="s">"attr0"</span> <span class="p">:</span> <span class="nb">int</span><span class="p">(</span><span class="o">&lt;</span><span class="n">VALUE</span> <span class="n">OF</span> <span class="n">ATTR0</span><span class="o">&gt;</span><span class="p">)</span>
+    <span class="p">}</span>
+<span class="p">)</span>
+<span class="n">client</span><span class="o">.</span><span class="n">create_event</span><span class="p">(</span>
+    <span class="n">event</span><span class="o">=</span><span class="s">"$set"</span><span class="p">,</span>
+    <span class="n">entity_type</span><span class="o">=</span><span class="s">"user"</span><span class="p">,</span>
+    <span class="n">entity_id</span><span class="o">=&lt;</span><span class="n">USER</span> <span class="n">ID</span><span class="o">&gt;</span><span class="p">,</span>
+    <span class="n">properties</span><span class="o">=</span> <span class="p">{</span>
+      <span class="s">"attr1"</span> <span class="p">:</span> <span class="nb">int</span><span class="p">(</span><span class="o">&lt;</span><span class="n">VALUE</span> <span class="n">OF</span> <span class="n">ATTR1</span><span class="o">&gt;</span><span class="p">),</span>
+      <span class="s">"attr2"</span> <span class="p">:</span> <span class="nb">int</span><span class="p">(</span><span class="o">&lt;</span><span class="n">VALUE</span> <span class="n">OF</span> <span class="n">ATTR2</span><span class="o">&gt;</span><span class="p">)</span>
+    <span class="p">}</span>
+<span class="p">)</span>
+
+<span class="n">client</span><span class="o">.</span><span class="n">create_event</span><span class="p">(</span>
+    <span class="n">event</span><span class="o">=</span><span class="s">"$set"</span><span class="p">,</span>
+    <span class="n">entity_type</span><span class="o">=</span><span class="s">"user"</span><span class="p">,</span>
+    <span class="n">entity_id</span><span class="o">=&lt;</span><span class="n">USER</span> <span class="n">ID</span><span class="o">&gt;</span><span class="p">,</span>
+    <span class="n">properties</span><span class="o">=</span> <span class="p">{</span>
+      <span class="s">"plan"</span> <span class="p">:</span> <span class="nb">int</span><span class="p">(</span><span class="o">&lt;</span><span class="n">VALUE</span> <span class="n">OF</span> <span class="n">PLAN</span><span class="o">&gt;</span><span class="p">)</span>
+    <span class="p">}</span>
+<span class="p">)</span>
+</pre></td> </tr></tbody></table> </div> </div> <div data-tab="PHP SDK" data-lang="php" id="tab-d4d47040-77b0-4d1c-8438-846c59b0e812"> <div class="highlight php"> <table style="border-spacing: 0"><tbody><tr> <td class="gutter gl" style="text-align: right"><pre class="lineno">1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32</pre></td> <td class="code"><pre><span class="cp">&lt;?php</span>
+
+<span class="c1">// You may also set the properties one by one
+</span><span class="nv">$client</span><span class="o">-&gt;</span><span class="na">createEvent</span><span class="p">(</span><span class="k">array</span><span class="p">(</span>
+   <span class="s1">'event'</span> <span class="o">=&gt;</span> <span class="s1">'$set'</span><span class="p">,</span>
+   <span class="s1">'entityType'</span> <span class="o">=&gt;</span> <span class="s1">'user'</span><span class="p">,</span>
+   <span class="s1">'entityId'</span> <span class="o">=&gt;</span> <span class="o">&lt;</span><span class="nx">USER</span> <span class="nx">ID</span><span class="o">&gt;</span><span class="p">,</span>
+   <span class="s1">'properties'</span> <span class="o">=&gt;</span> <span class="k">array</span><span class="p">(</span>
+     <span class="s1">'attr0'</span> <span class="o">=&gt;</span> <span class="o">&lt;</span><span class="nx">VALUE</span> <span class="nx">OF</span> <span class="nx">ATTR0</span><span class="o">&gt;</span>
+   <span class="p">)</span>
+<span class="p">));</span>
+
+<span class="nv">$client</span><span class="o">-&gt;</span><span class="na">createEvent</span><span class="p">(</span><span class="k">array</span><span class="p">(</span>
+   <span class="s1">'event'</span> <span class="o">=&gt;</span> <span class="s1">'$set'</span><span class="p">,</span>
+   <span class="s1">'entityType'</span> <span class="o">=&gt;</span> <span class="s1">'user'</span><span class="p">,</span>
+   <span class="s1">'entityId'</span> <span class="o">=&gt;</span> <span class="o">&lt;</span><span class="nx">USER</span> <span class="nx">ID</span><span class="o">&gt;</span><span class="p">,</span>
+   <span class="s1">'properties'</span> <span class="o">=&gt;</span> <span class="k">array</span><span class="p">(</span>
+     <span class="s1">'attr1'</span> <span class="o">=&gt;</span> <span class="o">&lt;</span><span class="nx">VALUE</span> <span class="nx">OF</span> <span class="nx">ATTR1</span><span class="o">&gt;</span><span class="p">,</span>
+     <span class="s1">'attr2'</span> <span class="o">=&gt;</span> <span class="o">&lt;</span><span class="nx">VALUE</span> <span class="nx">OF</span> <span class="nx">ATTR2</span><span class="o">&gt;</span>
+   <span class="p">)</span>
+<span class="p">));</span>
+
+<span class="nv">$client</span><span class="o">-&gt;</span><span class="na">createEvent</span><span class="p">(</span><span class="k">array</span><span class="p">(</span>
+   <span class="s1">'event'</span> <span class="o">=&gt;</span> <span class="s1">'$set'</span><span class="p">,</span>
+   <span class="s1">'entityType'</span> <span class="o">=&gt;</span> <span class="s1">'user'</span><span class="p">,</span>
+   <span class="s1">'entityId'</span> <span class="o">=&gt;</span> <span class="o">&lt;</span><span class="nx">USER</span> <span class="nx">ID</span><span class="o">&gt;</span><span class="p">,</span>
+   <span class="s1">'properties'</span> <span class="o">=&gt;</span> <span class="k">array</span><span class="p">(</span>
+     <span class="s1">'plan'</span> <span class="o">=&gt;</span> <span class="o">&lt;</span><span class="nx">VALUE</span> <span class="nx">OF</span> <span class="nx">PLAN</span><span class="o">&gt;</span>
+   <span class="p">)</span>
+<span class="p">));</span>
+
+<span class="cp">?&gt;</span>
+</pre></td> </tr></tbody></table> </div> </div> <div data-tab="Ruby SDK" data-lang="ruby" id="tab-3c8dd7bc-0990-4a47-9437-deaacb7ba270"> <div class="highlight ruby"> <table style="border-spacing: 0"><tbody><tr> <td class="gutter gl" style="text-align: right"><pre class="lineno">1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22</pre></td> <td class="code"><pre><span class="c1"># You may also set the properties one by one.</span>
+<span class="n">client</span><span class="p">.</span><span class="nf">create_event</span><span class="p">(</span>
+  <span class="s1">'$set'</span><span class="p">,</span>
+  <span class="s1">'user'</span><span class="p">,</span>
+  <span class="o">&lt;</span><span class="no">USER</span> <span class="no">ID</span><span class="o">&gt;</span><span class="p">,</span> <span class="p">{</span>
+    <span class="s1">'properties'</span> <span class="o">=&gt;</span> <span class="p">{</span>
+      <span class="s1">'attr0'</span> <span class="o">=&gt;</span> <span class="o">&lt;</span><span class="no">VALUE</span> <span class="no">OF</span> <span class="no">ATTR0</span> <span class="p">(</span><span class="n">integer</span><span class="p">)</span><span class="o">&gt;</span>
+    <span class="p">}</span>
+  <span class="p">}</span>
+<span class="p">)</span>
+
+<span class="n">client</span><span class="p">.</span><span class="nf">create_event</span><span class="p">(</span>
+  <span class="s1">'$set'</span><span class="p">,</span>
+  <span class="s1">'user'</span><span class="p">,</span>
+  <span class="o">&lt;</span><span class="no">USER</span> <span class="no">ID</span><span class="o">&gt;</span><span class="p">,</span> <span class="p">{</span>
+    <span class="s1">'properties'</span> <span class="o">=&gt;</span> <span class="p">{</span>
+      <span class="s1">'attr1'</span> <span class="o">=&gt;</span> <span class="o">&lt;</span><span class="no">VALUE</span> <span class="no">OF</span> <span class="no">ATTR1</span> <span class="p">(</span><span class="n">integer</span><span class="p">)</span><span class="o">&gt;</span><span class="p">,</span>
+    <span class="p">}</span>
+  <span class="p">}</span>
+<span class="p">)</span>
+
+<span class="c1"># Etc...</span>
+</pre></td> </tr></tbody></table> </div> </div> <div data-tab="Java SDK" data-lang="java" id="tab-b8376a13-843e-4c90-982b-911a2c71472a"> <div class="highlight java"> <table style="border-spacing: 0"><tbody><tr> <td class="gutter gl" style="text-align: right"><pre class="lineno">1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17</pre></td> <td class="code"><pre><span class="c1">// you may also set the properties one by one</span>
+<span class="n">client</span><span class="o">.</span><span class="na">createEvent</span><span class="o">(</span><span class="k">new</span> <span class="n">Event</span><span class="o">()</span>
+    <span class="o">.</span><span class="na">event</span><span class="o">(</span><span class="s">"$set"</span><span class="o">)</span>
+    <span class="o">.</span><span class="na">entityType</span><span class="o">(</span><span class="s">"user"</span><span class="o">)</span>
+    <span class="o">.</span><span class="na">entityId</span><span class="o">(&lt;</span><span class="n">USER</span> <span class="n">ID</span><span class="o">&gt;)</span>
+    <span class="o">.</span><span class="na">property</span><span class="o">(</span><span class="s">"attr0"</span><span class="o">,</span> <span class="o">&lt;</span><span class="n">VALUE</span> <span class="n">OF</span> <span class="n">ATTR0</span><span class="o">&gt;));</span>
+<span class="n">client</span><span class="o">.</span><span class="na">createEvent</span><span class="o">(</span><span class="k">new</span> <span class="n">Event</span><span class="o">()</span>
+    <span class="o">.</span><span class="na">event</span><span class="o">(</span><span class="s">"$set"</span><span class="o">)</span>
+    <span class="o">.</span><span class="na">entityType</span><span class="o">(</span><span class="s">"user"</span><span class="o">)</span>
+    <span class="o">.</span><span class="na">entityId</span><span class="o">(&lt;</span><span class="n">USER</span> <span class="n">ID</span><span class="o">&gt;)</span>
+    <span class="o">.</span><span class="na">property</span><span class="o">(</span><span class="s">"attr1"</span><span class="o">,</span> <span class="o">&lt;</span><span class="n">VALUE</span> <span class="n">OF</span> <span class="n">ATTR1</span><span class="o">&gt;)</span>
+    <span class="o">.</span><span class="na">property</span><span class="o">(</span><span class="s">"attr2"</span><span class="o">,</span> <span class="o">&lt;</span><span class="n">VALUE</span> <span class="n">OF</span> <span class="n">ATTR2</span><span class="o">&gt;));</span>
+<span class="n">client</span><span class="o">.</span><span class="na">createEvent</span><span class="o">(</span><span class="k">new</span> <span class="n">Event</span><span class="o">()</span>
+    <span class="o">.</span><span class="na">event</span><span class="o">(</span><span class="s">"$set"</span><span class="o">)</span>
+    <span class="o">.</span><span class="na">entityType</span><span class="o">(</span><span class="s">"user"</span><span class="o">)</span>
+    <span class="o">.</span><span class="na">entityId</span><span class="o">(&lt;</span><span class="n">USER</span> <span class="n">ID</span><span class="o">&gt;)</span>
+    <span class="o">.</span><span class="na">property</span><span class="o">(</span><span class="s">"plan"</span><span class="o">,</span> <span class="o">&lt;</span><span class="n">VALUE</span> <span class="n">OF</span> <span class="n">PLAN</span><span class="o">&gt;));</span>
+</pre></td> </tr></tbody></table> </div> </div> </div> <p>The properties of the <code>user</code> can be set, unset, or delete by special events <strong>$set</strong>, <strong>$unset</strong> and <strong>$delete</strong>. Please refer to <a href="/datacollection/eventapi/#note-about-properties">Event API</a> for more details of using these events.</p><p><h3 id='query-event-server' class='header-anchors'>Query Event Server</h3><p>Now let&#39;s query the EventServer and see if these events are imported successfully.</p><p>Go to following URL with your browser:</p><p><code><a href="http://localhost:7070/events.json?accessKey=&amp;lt;YOUR_ACCESS_KEY">http://localhost:7070/events.json?accessKey=&amp;lt;YOUR_ACCESS_KEY</a>&gt;</code></p><p>or run the following command in terminal:</p><div class="highlight shell"><table style="border-spacing: 0"><tbody><tr><td class="gutter gl" style="text-align: right"><pre class="lineno">1</pre></td><td class="code"><pre><span class="gp">$ </span>curl -i
  -X GET <span class="s2">&quot;<a href="http://localhost:7070/events.json?accessKey=">http://localhost:7070/events.json?accessKey=</a></span><span class="nv">$ACCESS_KEY</span><span class="s2">&quot;</span>
+</pre></td></tr></tbody></table> </div> <div class="alert-message note"><p>Note that you should quote the entire URL by using single or double quotes when you run the <code>curl</code> command.</p></div><p>It should return the imported events in JSON format. You can refer to <a href="/datacollection/eventapi/#debugging-recipes">Event Server Debugging Recipes</a> for more different ways to query Event Server.</p></p><h3 id='import-more-sample-data' class='header-anchors'>Import More Sample Data</h3><p>This engine requires more data in order to train a useful model. Instead of sending more events one by one in real time, for quickstart demonstration purpose, we are going to use a script to import more events in batch.</p> <p>A Python import script <code>import_eventserver.py</code> is provided to import the data to Event Server using Python SDK. Please upgrade to the latest Python SDK.</p><p>First, you will need to install Python SDK in order to run the sample data import script. To i
 nstall Python SDK, run:</p><div class="highlight shell"><table style="border-spacing: 0"><tbody><tr><td class="gutter gl" style="text-align: right"><pre class="lineno">1</pre></td><td class="code"><pre><span class="gp">$ </span>pip install predictionio
+</pre></td></tr></tbody></table> </div> <p>or</p><div class="highlight shell"><table style="border-spacing: 0"><tbody><tr><td class="gutter gl" style="text-align: right"><pre class="lineno">1</pre></td><td class="code"><pre><span class="gp">$ </span>easy_install predictionio
+</pre></td></tr></tbody></table> </div> <div class="alert-message note"><p>You may need <code>sudo</code> access if you have permission issue. (ie. <code>sudo pip install predictionio</code>)</p></div> <p><a href="#"></a></p> <p>Make sure you are under the <code>MyClassification</code> directory. Replace the value of access_key parameter by your <strong>Access Key</strong> and run:</p><div class="highlight shell"><table style="border-spacing: 0"><tbody><tr><td class="gutter gl" style="text-align: right"><pre class="lineno">1
+2</pre></td><td class="code"><pre><span class="gp">$ </span><span class="nb">cd </span>MyClassification
+<span class="gp">$ </span>python data/import_eventserver.py --access_key obbiTuSOiMzyFKsvjjkDnWk1vcaHjcjrv9oT3mtN3y6fOlpJoVH459O1bPmDzCdv
+</pre></td></tr></tbody></table> </div> <p>You should see the following output:</p><div class="highlight shell"><table style="border-spacing: 0"><tbody><tr><td class="gutter gl" style="text-align: right"><pre class="lineno">1
+2</pre></td><td class="code"><pre>Importing data...
+6 events are imported.
+</pre></td></tr></tbody></table> </div> <p>Now the training data is stored as events inside the Event Store.</p> <p><a href="#"></a></p><div class="alert-message warning"><p>If you see error <strong>TypeError: <strong>init</strong>() got an unexpected keyword argument &#39;access_key&#39;</strong>, please update the Python SDK to the latest version.</p></div><p>You can query the event server again as described previously to check the imported events.</p> <h2 id='5.-deploy-the-engine-as-a-service' class='header-anchors'>5. Deploy the Engine as a Service</h2><p>Now you can build, train, and deploy the engine. First, make sure you are under the <code>MyClassification</code> directory.</p><div class="highlight shell"><table style="border-spacing: 0"><tbody><tr><td class="gutter gl" style="text-align: right"><pre class="lineno">1</pre></td><td class="code"><pre><span class="gp">$ </span><span class="nb">cd </span>MyClassification
+</pre></td></tr></tbody></table> </div> <h3 id='engine.json' class='header-anchors'>Engine.json</h3><p>Under the directory, you should find an <code>engine.json</code> file; this is where you specify parameters for the engine.</p><div class="alert-message warning"><p>Modify this file to make sure the <code>appName</code> parameter match your <strong>App Name</strong> you created earlier (e.g. &quot;MyApp1&quot; if you follow the quickstart).</p></div><div class="highlight shell"><table style="border-spacing: 0"><tbody><tr><td class="gutter gl" style="text-align: right"><pre class="lineno">1
+2
+3
+4
+5
+6
+7</pre></td><td class="code"><pre>  ...
+  <span class="s2">"datasource"</span>: <span class="o">{</span>
+    <span class="s2">"params"</span> : <span class="o">{</span>
+      <span class="s2">"appName"</span>: <span class="s2">"MyApp1"</span>
+    <span class="o">}</span>
+  <span class="o">}</span>,
+  ...
+</pre></td></tr></tbody></table> </div> <div class="alert-message note"><p>You may see <code>appId</code> in engine.json instead, which means you are using old template. In this case, make sure the <code>appId</code> defined in the file match your <strong>App ID</strong>. Alternatively, you can download the latest version of the template or follow our <a href="/resources/upgrade/#upgrade-to-0.9.2">upgrade instructions</a> to modify the template to use <code>appName</code> as parameter.</p></div> <p><a href="#"></a></p> <p><h3 id='building' class='header-anchors'>Building</h3><p>Start with building your <em>MyClassification</em> engine. Run the following command:</p><div class="highlight shell"><table style="border-spacing: 0"><tbody><tr><td class="gutter gl" style="text-align: right"><pre class="lineno">1</pre></td><td class="code"><pre><span class="gp">$ </span>pio build --verbose
+</pre></td></tr></tbody></table> </div> <p>This command should take few minutes for the first time; all subsequent builds should be less than a minute. You can also run it without <code>--verbose</code> if you don&#39;t want to see all the log messages.</p><p>Upon successful build, you should see a console message similar to the following.</p><div class="highlight shell"><table style="border-spacing: 0"><tbody><tr><td class="gutter gl" style="text-align: right"><pre class="lineno">1</pre></td><td class="code"><pre><span class="o">[</span>INFO] <span class="o">[</span>Console<span class="nv">$]</span> Your engine is ready <span class="k">for </span>training.
+</pre></td></tr></tbody></table> </div> <h3 id='training-the-predictive-model' class='header-anchors'>Training the Predictive Model</h3><p>To train your engine, run the following command:</p><div class="highlight shell"><table style="border-spacing: 0"><tbody><tr><td class="gutter gl" style="text-align: right"><pre class="lineno">1</pre></td><td class="code"><pre><span class="gp">$ </span>pio train
+</pre></td></tr></tbody></table> </div> <p>When your engine is trained successfully, you should see a console message similar to the following.</p><div class="highlight shell"><table style="border-spacing: 0"><tbody><tr><td class="gutter gl" style="text-align: right"><pre class="lineno">1</pre></td><td class="code"><pre><span class="o">[</span>INFO] <span class="o">[</span>CoreWorkflow<span class="nv">$]</span> Training completed successfully.
+</pre></td></tr></tbody></table> </div> <h3 id='deploying-the-engine' class='header-anchors'>Deploying the Engine</h3><p>Now your engine is ready to deploy. Run:</p><div class="highlight shell"><table style="border-spacing: 0"><tbody><tr><td class="gutter gl" style="text-align: right"><pre class="lineno">1</pre></td><td class="code"><pre><span class="gp">$ </span>pio deploy
+</pre></td></tr></tbody></table> </div> <p>When the engine is deployed successfully and running, you should see a console message similar to the following:</p><div class="highlight shell"><table style="border-spacing: 0"><tbody><tr><td class="gutter gl" style="text-align: right"><pre class="lineno">1
+2</pre></td><td class="code"><pre><span class="o">[</span>INFO] <span class="o">[</span>HttpListener] Bound to /0.0.0.0:8000
+<span class="o">[</span>INFO] <span class="o">[</span>MasterActor] Bind successful. Ready to serve.
+</pre></td></tr></tbody></table> </div> <p>Do not kill the deployed engine process.</p><p>By default, the deployed engine binds to <a href="http://localhost:8000"><a href="http://localhost:8000">http://localhost:8000</a></a>. You can visit that page in your web browser to check its status.</p><p><img alt="Engine Status" src="/images/engine-server-3246414b.png"/></p></p><h2 id='6.-use-the-engine' class='header-anchors'>6. Use the Engine</h2><p>Now, You can try to retrieve predicted results. For example, to predict the label (i.e. <em>plan</em> in this case) of a user with attr0=2, attr1=0 and attr2=0, you send this JSON <code>{ &quot;attr0&quot;:2, &quot;attr1&quot;:0, &quot;attr2&quot;:0 }</code> to the deployed engine and it will return a JSON of the predicted plan. Simply send a query by making a HTTP request or through the <code>EngineClient</code> of an SDK.</p><p>With the deployed engine running, open another temrinal and run the following <code>curl</code> command or use SDK t
 o send the query:</p><div class="tabs"> <ul class="control"> <li data-lang="bash"><a href="#tab-f6485d00-c570-4e7d-acca-43df3cd9a041">REST API</a></li> <li data-lang="python"><a href="#tab-8ead9892-571c-4030-9c2b-4372e6490e2d">Python SDK</a></li> <li data-lang="php"><a href="#tab-af7f9d5d-d306-4aa4-8c4b-7d376f861e91">PHP SDK</a></li> <li data-lang="ruby"><a href="#tab-d8653460-d0e3-4d44-b943-2d2b7e032a64">Ruby SDK</a></li> <li data-lang="java"><a href="#tab-d7932e52-7ea1-4222-8186-ae4f04b34c7e">Java SDK</a></li> </ul> <div data-tab="REST API" data-lang="bash" id="tab-f6485d00-c570-4e7d-acca-43df3cd9a041"> <div class="highlight shell"> <table style="border-spacing: 0"><tbody><tr> <td class="gutter gl" style="text-align: right"><pre class="lineno">1
+2
+3</pre></td> <td class="code"><pre><span class="gp">$ </span>curl -H <span class="s2">"Content-Type: application/json"</span> <span class="se">\</span>
+-d <span class="s1">'{ "attr0":2, "attr1":0, "attr2":0 }'</span> http://localhost:8000/queries.json
+
+</pre></td> </tr></tbody></table> </div> </div> <div data-tab="Python SDK" data-lang="python" id="tab-8ead9892-571c-4030-9c2b-4372e6490e2d"> <div class="highlight python"> <table style="border-spacing: 0"><tbody><tr> <td class="gutter gl" style="text-align: right"><pre class="lineno">1
+2
+3</pre></td> <td class="code"><pre><span class="kn">import</span> <span class="nn">predictionio</span>
+<span class="n">engine_client</span> <span class="o">=</span> <span class="n">predictionio</span><span class="o">.</span><span class="n">EngineClient</span><span class="p">(</span><span class="n">url</span><span class="o">=</span><span class="s">"http://localhost:8000"</span><span class="p">)</span>
+<span class="k">print</span> <span class="n">engine_client</span><span class="o">.</span><span class="n">send_query</span><span class="p">({</span><span class="s">"attr0"</span><span class="p">:</span><span class="mi">2</span><span class="p">,</span> <span class="s">"attr1"</span><span class="p">:</span><span class="mi">0</span><span class="p">,</span> <span class="s">"attr2"</span><span class="p">:</span><span class="mi">0</span><span class="p">})</span>
+</pre></td> </tr></tbody></table> </div> </div> <div data-tab="PHP SDK" data-lang="php" id="tab-af7f9d5d-d306-4aa4-8c4b-7d376f861e91"> <div class="highlight php"> <table style="border-spacing: 0"><tbody><tr> <td class="gutter gl" style="text-align: right"><pre class="lineno">1
+2
+3
+4
+5
+6
+7
+8
+9
+10</pre></td> <td class="code"><pre><span class="cp">&lt;?php</span>
+<span class="k">require_once</span><span class="p">(</span><span class="s2">"vendor/autoload.php"</span><span class="p">);</span>
+<span class="k">use</span> <span class="nx">predictionio\EngineClient</span><span class="p">;</span>
+
+<span class="nv">$client</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">EngineClient</span><span class="p">(</span><span class="s1">'http://localhost:8000'</span><span class="p">);</span>
+
+<span class="nv">$response</span> <span class="o">=</span> <span class="nv">$client</span><span class="o">-&gt;</span><span class="na">sendQuery</span><span class="p">(</span><span class="k">array</span><span class="p">(</span><span class="s1">'attr0'</span><span class="o">=&gt;</span> <span class="mi">2</span><span class="p">,</span> <span class="s1">'attr1'</span> <span class="o">=&gt;</span> <span class="mi">0</span><span class="p">,</span> <span class="s1">'attr2'</span> <span class="o">=&gt;</span> <span class="mi">0</span><span class="p">));</span>
+<span class="nb">print_r</span><span class="p">(</span><span class="nv">$response</span><span class="p">);</span>
+
+<span class="cp">?&gt;</span>
+</pre></td> </tr></tbody></table> </div> </div> <div data-tab="Ruby SDK" data-lang="ruby" id="tab-d8653460-d0e3-4d44-b943-2d2b7e032a64"> <div class="highlight ruby"> <table style="border-spacing: 0"><tbody><tr> <td class="gutter gl" style="text-align: right"><pre class="lineno">1
+2
+3
+4
+5
+6
+7</pre></td> <td class="code"><pre><span class="c1"># Create client object.</span>
+<span class="n">client</span> <span class="o">=</span> <span class="no">PredictionIO</span><span class="o">::</span><span class="no">EngineClient</span><span class="p">.</span><span class="nf">new</span><span class="p">(</span><span class="o">&lt;</span><span class="no">ENGINE</span> <span class="no">DEPLOY</span> <span class="no">URL</span><span class="o">&gt;</span><span class="p">)</span>
+
+<span class="c1"># Query PredictionIO.</span>
+<span class="n">response</span> <span class="o">=</span> <span class="n">client</span><span class="p">.</span><span class="nf">send_query</span><span class="p">(</span><span class="s1">'attr0'</span> <span class="o">=&gt;</span> <span class="mi">2</span><span class="p">,</span> <span class="s1">'attr1'</span> <span class="o">=&gt;</span> <span class="mi">0</span><span class="p">,</span> <span class="s1">'attr2'</span> <span class="o">=&gt;</span> <span class="mi">0</span><span class="p">)</span>
+
+<span class="nb">puts</span> <span class="n">response</span>
+</pre></td> </tr></tbody></table> </div> </div> <div data-tab="Java SDK" data-lang="java" id="tab-d7932e52-7ea1-4222-8186-ae4f04b34c7e"> <div class="highlight java"> <table style="border-spacing: 0"><tbody><tr> <td class="gutter gl" style="text-align: right"><pre class="lineno">1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13</pre></td> <td class="code"><pre><span class="kn">import</span> <span class="nn">com.google.common.collect.ImmutableList</span><span class="o">;</span>
+<span class="kn">import</span> <span class="nn">com.google.common.collect.ImmutableMap</span><span class="o">;</span>
+<span class="kn">import</span> <span class="nn">com.google.gson.JsonObject</span><span class="o">;</span>
+
+<span class="kn">import</span> <span class="nn">io.prediction.EngineClient</span><span class="o">;</span>
+
+<span class="n">EngineClient</span> <span class="n">engineClient</span> <span class="o">=</span> <span class="k">new</span> <span class="n">EngineClient</span><span class="o">(&lt;</span><span class="n">ENGINE</span> <span class="n">DEPLOY</span> <span class="n">URL</span><span class="o">&gt;);</span>
+
+<span class="n">JsonObject</span> <span class="n">response</span> <span class="o">=</span> <span class="n">engineClient</span><span class="o">.</span><span class="na">sendQuery</span><span class="o">(</span><span class="n">ImmutableMap</span><span class="o">.&lt;</span><span class="n">String</span><span class="o">,</span> <span class="n">Object</span><span class="o">&gt;</span><span class="n">of</span><span class="o">(</span>
+        <span class="s">"attr0"</span><span class="o">,</span> <span class="mi">2</span><span class="o">,</span>
+        <span class="s">"attr1"</span><span class="o">,</span> <span class="mi">0</span><span class="o">,</span>
+        <span class="s">"attr2"</span><span class="o">,</span> <span class="mi">0</span>
+    <span class="o">));</span>
+</pre></td> </tr></tbody></table> </div> </div> </div> <div class="alert-message warning"><p>The Query format is changed since version v0.3.1. If you are using old Classification template version v0.3.0 or earlier, the query format is array of feature values instead: <code>{ &quot;features&quot;: [2, 0, 0] }</code>.</p></div><p>The following is sample JSON response:</p><div class="highlight shell"><table style="border-spacing: 0"><tbody><tr><td class="gutter gl" style="text-align: right"><pre class="lineno">1</pre></td><td class="code"><pre><span class="o">{</span><span class="s2">"label"</span>:0.0<span class="o">}</span>
+</pre></td></tr></tbody></table> </div> <p>Similarly, to predict the label (i.e. <em>plan</em> in this case) of a user with attr0=4, attr1=3 and attr2=8, you send this JSON <code>{ &quot;attr0&quot;: 4, &quot;attr1&quot;: 3, &quot;attr2&quot;: 8] }</code> to the deployed engine and it will return a JSON of the predicted plan.</p><div class="alert-message warning"><p>For classification template version v0.3.0 or earlier, the query JSON would be <code>{ &quot;features&quot;: [4, 3, 8] }</code>.</p></div><p><em>MyClassification</em> is now running.</p><div class="alert-message info"><p>To update the model periodically with new data, simply set up a cron job to call <code>pio train</code> and <code>pio deploy</code>. The engine will continue to serve prediction results during the re-train process. After the training is completed, <code>pio deploy</code> will automatically shutdown the existing engine server and bring up a new process on the same port.</p></div><div class="alert-message 
 info"><p><strong>Note that if you import a <em>large</em> data set</strong> and the training seems to be taking forever or getting stuck, it&#39;s likely that there is not enough executor memory. It&#39;s recommended to setup a Spark standalone cluster, you&#39;ll need to specify more driver and executor memory when training with a large data set. Please see <a href="/resources/faq/#engine-training">FAQ here</a> for instructions.</p></div> <p>Next, we are going to take a look at the engine architecture and explain how you can customize it completely.</p><h4 id='<a-href="/templates/classification/dase/">next:-dase-components-explained</a>' class='header-anchors' ><a href="/templates/classification/dase/">Next: DASE Components Explained</a></h4></div></div></div></div><footer><div class="container"><div class="seperator"></div><div class="row"><div class="col-md-4 col-md-push-8 col-xs-12"><div class="subscription-form-wrapper"><h4>Subscribe to our Newsletter</h4><form class="ajax-form
 " id="subscribe-form" method="POST" action="https://script.google.com/macros/s/AKfycbwhzeKCQJjQ52eVAqNT_vcklH07OITUO7wzOMDXvK6EGAWgaZgF/exec"><input class="required underlined-input" type="email" placeholder="Your email address" name="subscription_email" id="subscription_email"/><input class="pill-button" value="SUBSCRIBE" type="submit" data-state-normal="SUBSCRIBE" data-state-sucess="SUBSCRIBED!" data-state-loading="SENDING..." onclick="t($('#subscription_email').val());"/><p class="result"></p></form></div></div><div class="col-md-2 col-md-pull-4 col-xs-6 footer-link-column"><div class="footer-link-column-row"><h4>Community</h4><ul><li><a href="//docs.prediction.io/install/" target="blank">Download</a></li><li><a href="//docs.prediction.io/" target="blank">Docs</a></li><li><a href="//github.com/PredictionIO/PredictionIO" target="blank">GitHub</a></li><li><a href="//groups.google.com/forum/#!forum/predictionio-user" target="blank">Support Forum</a></li><li><a href="//stackoverflow.
 com/questions/tagged/predictionio" target="blank">Stackoverflow</a></li><li><a href="mailto:&#x73;&#x75;&#x70;&#x70;&#x6F;&#x72;&#x74;&#x40;&#x70;&#x72;&#x65;&#x64;&#x69;&#x63;&#x74;&#x69;&#x6F;&#x6E;&#x2E;&#x69;&#x6F;" target="blank">Contact Us</a></li></ul></div></div><div class="col-md-2 col-md-pull-4 col-xs-6 footer-link-column"><div class="footer-link-column-row"><h4>Contribute</h4><ul><li><a href="//docs.prediction.io/community/contribute-code/" target="blank">Contribute</a></li><li><a href="//github.com/PredictionIO/PredictionIO" target="blank">Source Code</a></li><li><a href="//predictionio.atlassian.net/secure/Dashboard.jspa" target="blank">Bug Tracker</a></li><li><a href="//groups.google.com/forum/#!forum/predictionio-dev" target="blank">Contributors&#146; Forum</a></li><li><a href="//prediction.io/cla">Contributor Agreement</a></li><li><a href="//predictionio.uservoice.com/forums/219398-general/filters/top">Request Features</a></li></ul></div></div><div class="col-md-2 co
 l-md-pull-4 col-xs-6 footer-link-column"><div class="footer-link-column-row"><h4>Enterprise</h4><ul><li><a href="//docs.prediction.io/support/" target="blank">Support</a></li><li><a href="//prediction.io/enterprise">Enterprise</a></li><li><a href="//prediction.io/products/predictionio-enterprise">Services</a></li></ul></div><div class="footer-link-column-row"><h4>Connect</h4><ul><li><a href="//blog.prediction.io/" target="blank">Blog</a></li><li><a href="//predictionio.theresumator.com/" target="blank">Careers</a></li></ul></div></div><div class="col-md-2 col-md-pull-4 col-xs-6 footer-link-column"><div class="footer-link-column-row"><h4>Partnership</h4><ul><li><a href="//prediction.io/partners/program">Partner Program</a></li></ul></div></div></div></div><div id="footer-bottom"><div class="container"><div class="row"><div class="col-md-12"><div id="footer-logo-wrapper"><img alt="PredictionIO" src="/images/logos/logo-white-d1e9c6e6.png"/></div><div id="social-icons-wrapper"><a class=
 "github-button" href="https://github.com/PredictionIO/PredictionIO" data-style="mega" data-count-href="/PredictionIO/PredictionIO/stargazers" data-count-api="/repos/PredictionIO/PredictionIO#stargazers_count" data-count-aria-label="# stargazers on GitHub" aria-label="Star PredictionIO/PredictionIO on GitHub">Star</a> <a class="github-button" href="https://github.com/PredictionIO/PredictionIO/fork" data-icon="octicon-git-branch" data-style="mega" data-count-href="/PredictionIO/PredictionIO/network" data-count-api="/repos/PredictionIO/PredictionIO#forks_count" data-count-aria-label="# forks on GitHub" aria-label="Fork PredictionIO/PredictionIO on GitHub">Fork</a> <script id="github-bjs" async="" defer="" src="https://buttons.github.io/buttons.js"></script><a href="//www.facebook.com/predictionio" target="blank"><img alt="PredictionIO on Twitter" src="/images/icons/twitter-ea9dc152.png"/></a> <a href="//twitter.com/predictionio" target="blank"><img alt="PredictionIO on Facebook" src="/
 images/icons/facebook-5c57939c.png"/></a> </div></div></div></div></div></footer></div><script>(function(w,d,t,u,n,s,e){w['SwiftypeObject']=n;w[n]=w[n]||function(){
+(w[n].q=w[n].q||[]).push(arguments);};s=d.createElement(t);
+e=d.getElementsByTagName(t)[0];s.async=1;s.src=u;e.parentNode.insertBefore(s,e);
+})(window,document,'script','//s.swiftypecdn.com/install/v1/st.js','_st');
+
+_st('install','HaUfpXXV87xoB_zzCQ45');</script><script>var _qevents = _qevents || [];
+(function() {
+var elem = document.createElement('script');
+elem.src = (document.location.protocol == "https:" ? "https://secure" : "http://edge") + ".quantserve.com/quant.js";
+elem.async = true;
+elem.type = "text/javascript";
+var scpt = document.getElementsByTagName('script')[0];
+scpt.parentNode.insertBefore(elem, scpt);
+})();
+_qevents.push({
+qacct:"p-stVMxuw8H5EPX"
+});</script><noscript><div style="display:none;"><img src="//pixel.quantserve.com/pixel/p-stVMxuw8H5EPX.gif" border="0" height="1" width="1" alt="Quantcast"/></div></noscript><script>adroll_adv_id = "CPSSMJFFZ5DDHITC2STA54";
+adroll_pix_id = "UWX4N2WIMJADVHJGOFTM44";
+(function () {
+    var _onload = function(){
+        if (document.readyState && !/loaded|complete/.test(document.readyState)){setTimeout(_onload, 10);return}
+        if (!window.__adroll_loaded){__adroll_loaded=true;setTimeout(_onload, 50);return}
+        var scr = document.createElement("script");
+        var host = (("https:" == document.location.protocol) ? "https://s.adroll.com" : "http://a.adroll.com");
+        scr.setAttribute('async', 'true');
+        scr.type = "text/javascript";
+        scr.src = host + "/j/roundtrip.js";
+        ((document.getElementsByTagName('head') || [null])[0] ||
+            document.getElementsByTagName('script')[0].parentNode).appendChild(scr);
+    };
+    if (window.addEventListener) {window.addEventListener('load', _onload, false);}
+    else {window.attachEvent('onload', _onload)}
+}());</script><script src="/javascripts/application-5a24945b.js"></script></body></html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-predictionio-site/blob/92a45fa4/templates/classification/quickstart/index.html.gz
----------------------------------------------------------------------
diff --git a/templates/classification/quickstart/index.html.gz b/templates/classification/quickstart/index.html.gz
new file mode 100644
index 0000000..7cc3f4b
Binary files /dev/null and b/templates/classification/quickstart/index.html.gz differ


Mime
View raw message