http://git-wip-us.apache.org/repos/asf/incubator-predictionio-site/blob/2e6db646/customize/troubleshooting/index.html
----------------------------------------------------------------------
diff --git a/customize/troubleshooting/index.html 
b/customize/troubleshooting/index.html
deleted file mode 100644
index e6a7d05..0000000
--- a/customize/troubleshooting/index.html
+++ /dev/null
@@ -1,85 +0,0 @@
-<!DOCTYPE html><html><head><title>Engine Development - 
Troubleshoot</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="Engine Development - 
Troubleshoot"/><link rel="canonical" 
href="https://predictionio.incubator.apache.org/customize/troubleshooting/"/><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-3a3867f7.css" 
rel="stylesheet" type="text/css"/><script 
src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.2/html5shiv.min.js"></script><scr
 ipt 
src="//cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script><script
 src="//use.typekit.net/pqo0itb.js"></script><script>try{Typekit.load({ async: 
true });}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://predictionio.incubator.apache.org/";><img 
alt="PredictionIO" id="logo" 
src="/images/logos/logo-ee2b9bb3.png"/></a></div><div id="menu-wrapper"><div 
id="pill-wrapper"><a class="pill left" 
href="/gallery/template-gallery">TEMPLATES</a> <a class="pill right" 
href="//github.com/apache/incubator-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>Troubleshooting 
Engine Development</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" 
href="/batchpredict/"><span>Batch Predictions</s
 pan></a></li><li class="level-2"><a class="final" 
href="/deploy/monitoring/"><span>Monitoring Engine</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><li class="level-2"><a class="final" 
href="/deploy/plugin/"><span>Engine Server Plugin</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 active" 
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="/datacollection/"><span>Event Server Overview</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><li class="level-2"><a class="final" 
href="/datacollection/plugin/"><span>Event Server Plugin</span>
 </a></li></ul></li><li class="level-1"><a class="expandible" 
href="#"><span>Choosing an Algorithm(s)</span></a><ul><li class="level-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>PredictionIO Official 
Templates</span></a><ul><li class="level-2"><a class="final" 
href="/templates/"><span>Intro</span></a></li><li class="level-2"><a 
class="expandible" href="#"><span>Recommendation</span></a><ul><li 
class="level-3"><a class="final" 
href="/templates/recommendation/quickstart/"><span>Quick 
Start</span></a></li><li class="level-3"><a class="final" 
href="/templates/recomm
 endation/dase/"><span>DASE</span></a></li><li class="level-3"><a class="final" 
href="/templates/recommendation/evaluation/"><span>Evaluation 
Explained</span></a></li><li class="level-3"><a class="final" 
href="/templates/recommendation/how-to/"><span>How-To</span></a></li><li 
class="level-3"><a class="final" 
href="/templates/recommendation/reading-custom-events/"><span>Read Custom 
Events</span></a></li><li class="level-3"><a class="final" 
href="/templates/recommendation/customize-data-prep/"><span>Customize Data 
Preparator</span></a></li><li class="level-3"><a class="final" 
href="/templates/recommendation/customize-serving/"><span>Customize 
Serving</span></a></li><li class="level-3"><a class="final" 
href="/templates/recommendation/training-with-implicit-preference/"><span>Train 
with Implicit Preference</span></a></li><li class="level-3"><a class="final" 
href="/templates/recommendation/blacklist-items/"><span>Filter Recommended 
Items by Blacklist in Query</span></a></li><li class="lev
 el-3"><a class="final" 
href="/templates/recommendation/batch-evaluator/"><span>Batch Persistable 
Evaluator</span></a></li></ul></li><li class="level-2"><a class="expandible" 
href="#"><span>E-Commerce Recommendation</span></a><ul><li class="level-3"><a 
class="final" href="/templates/ecommercerecommendation/quickstart/"><span>Quick 
Start</span></a></li><li class="level-3"><a class="final" 
href="/templates/ecommercerecommendation/dase/"><span>DASE</span></a></li><li 
class="level-3"><a class="final" 
href="/templates/ecommercerecommendation/how-to/"><span>How-To</span></a></li><li
 class="level-3"><a class="final" 
href="/templates/ecommercerecommendation/train-with-rate-event/"><span>Train 
with Rate Event</span></a></li><li class="level-3"><a class="final" 
href="/templates/ecommercerecommendation/adjust-score/"><span>Adjust 
Score</span></a></li></ul></li><li class="level-2"><a class="expandible" 
href="#"><span>Similar Product</span></a><ul><li class="level-3"><a 
class="final" href="/templ
 ates/similarproduct/quickstart/"><span>Quick Start</span></a></li><li 
class="level-3"><a class="final" 
href="/templates/similarproduct/dase/"><span>DASE</span></a></li><li 
class="level-3"><a class="final" 
href="/templates/similarproduct/how-to/"><span>How-To</span></a></li><li 
class="level-3"><a class="final" 
href="/templates/similarproduct/multi-events-multi-algos/"><span>Multiple 
Events and Multiple Algorithms</span></a></li><li class="level-3"><a 
class="final" 
href="/templates/similarproduct/return-item-properties/"><span>Returns Item 
Properties</span></a></li><li class="level-3"><a class="final" 
href="/templates/similarproduct/train-with-rate-event/"><span>Train with Rate 
Event</span></a></li><li class="level-3"><a class="final" 
href="/templates/similarproduct/rid-user-set-event/"><span>Get Rid of Events 
for Users</span></a></li><li class="level-3"><a class="final" 
href="/templates/similarproduct/recommended-user/"><span>Recommend 
Users</span></a></li></ul></li><li class="level-
 2"><a class="expandible" href="#"><span>Classification</span></a><ul><li 
class="level-3"><a class="final" 
href="/templates/classification/quickstart/"><span>Quick 
Start</span></a></li><li class="level-3"><a class="final" 
href="/templates/classification/dase/"><span>DASE</span></a></li><li 
class="level-3"><a class="final" 
href="/templates/classification/how-to/"><span>How-To</span></a></li><li 
class="level-3"><a class="final" 
href="/templates/classification/add-algorithm/"><span>Use Alternative 
Algorithm</span></a></li><li class="level-3"><a class="final" 
href="/templates/classification/reading-custom-properties/"><span>Read Custom 
Properties</span></a></li></ul></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="/gallery/template-gallery/"><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 Web
 hook</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" 
href="/resources/faq/"><span>FAQs</span></a></li><li class="level-2"><a 
class="final" href="/support/"><span>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="/cli/"><span>Command-line Interface</span></a></li><li class="level-2"><a 
class="final" href="/resources/release/"><span>Release 
Cadence</span></a></li><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></l
 i></ul></li><li class="level-1"><a class="expandible" href="#"><span>Apache 
Software Foundation</span></a><ul><li class="level-2"><a class="final" 
href="https://www.apache.org/";><span>Apache Homepage</span></a></li><li 
class="level-2"><a class="final" 
href="https://www.apache.org/licenses/";><span>License</span></a></li><li 
class="level-2"><a class="final" 
href="https://www.apache.org/foundation/sponsorship.html";><span>Sponsorship</span></a></li><li
 class="level-2"><a class="final" 
href="https://www.apache.org/foundation/thanks.html";><span>Thanks</span></a></li><li
 class="level-2"><a class="final" 
href="https://www.apache.org/security/";><span>Security</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="breadcrumbs" class="hidden-sm hidden xs"><ul><li><a 
href="#">Customizing an Engine</a><span 
class="spacer">&gt;</span></li><li><span class="last">Troubleshooting Engine 
Development</span></li></ul></div><div
  id="page-title"><h1>Engine Development - Troubleshoot</h1></div></div><div 
id="table-of-content-wrapper"><h5>On this page</h5><aside 
id="table-of-contents"><ul> <li> <a href="#stop-training-between-stages">Stop 
Training between Stages</a> </li> <li> <a href="#sanity-check">Sanity Check</a> 
</li> <li> <a href="#engine-status-page">Engine Status Page</a> </li> <li> <a 
href="#pio-shell">pio-shell</a> </li> </ul> </aside><hr/><a id="edit-page-link" 
href="https://github.com/apache/incubator-predictionio/tree/livedoc/docs/manual/source/customize/troubleshooting.html.md";><img
 src="/images/icons/edit-pencil-d6c1bb3d.png"/>Edit this page</a></div><div 
class="content-header hidden-sm hidden-xs"><div id="breadcrumbs" 
class="hidden-sm hidden xs"><ul><li><a href="#">Customizing an Engine</a><span 
class="spacer">&gt;</span></li><li><span class="last">Troubleshooting Engine 
Development</span></li></ul></div><div id="page-title"><h1>Engine Development - 
Troubleshoot</h1></div></div><div class="con
 tent"> <p>Apache PredictionIO (incubating) provides the following features to 
help you debug engines during development cycle.</p><h2 
id='stop-training-between-stages' class='header-anchors'>Stop Training between 
Stages</h2><p>By default <code>pio train</code> runs through the whole training 
process including <a href="/templates/recommendation/dase/">DataSource, 
Preparator and Algorithm</a>. To speed up the development and debug cycle, you 
can stop the process after each stage to verify it has completed 
correctly.</p><p>If you have modified DataSource and want to confirm the 
TrainingData is generated as expected, you can run <code>pio train</code> with 
<code>--stop-after-read</code> option:</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>pio train 
--stop-after-read
-</pre></td></tr></tbody></table> </div> <p>This would stop the training 
process after the TrainingData is generated.</p><p>For example, if you are 
running <a href="/templates/recommendation/quickstart/">Recommendation 
Template</a>, you should see the the training process stops after the 
TrainingData is printed.</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>CoreWorkflow<span class="nv">$]</span> TrainingData:
-<span class="o">[</span>INFO] <span class="o">[</span>CoreWorkflow<span 
class="nv">$]</span> ratings: <span class="o">[</span>1501] <span 
class="o">(</span>List<span class="o">(</span>Rating<span 
class="o">(</span>3,0,4.0<span class="o">)</span>, Rating<span 
class="o">(</span>3,1,4.0<span class="o">))</span>...<span class="o">)</span>
-...
-<span class="o">[</span>INFO] <span class="o">[</span>CoreWorkflow<span 
class="nv">$]</span> Training interrupted by 
org.apache.predictionio.workflow.StopAfterReadInterruption.
-</pre></td></tr></tbody></table> </div> <p>Similarly, you can stop the 
training after the Preparator phase by using --stop-after-prepare option and it 
would stop after PreparedData is generated:</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>pio train --stop-after-prepare
-</pre></td></tr></tbody></table> </div> <h2 id='sanity-check' 
class='header-anchors'>Sanity Check</h2><p>You can extend a trait 
<code>SanityCheck</code> and implement the method <code>sanityCheck()</code> 
with your error checking code. The <code>sanityCheck()</code> is called when 
the data is generated. This can be applied to <code>TrainingData</code>, 
<code>PreparedData</code> and the <code>Model</code> classes, which are outputs 
of DataSource&#39;s <code>readTraining()</code>, Preparator&#39;s 
<code>prepare()</code> and Algorithm&#39;s <code>train()</code> methods, 
respectively.</p><p>For example, one frequent error with the Recommendation 
Template is that the TrainingData is empty because the DataSource is not 
reading data correctly. You can add the check of empty data inside the 
<code>sanityCheck()</code> function. You can easily add other checking logic 
into the <code>sanityCheck()</code> function based on your own needs. Also, If 
you implement <code>toString()</code> method in
  your TrainingData. You can call <code>toString()</code> inside 
<code>sanityCheck()</code> to print out some data for visual 
checking.</p><p>For example, to print TrainingData to console and check if the 
<code>ratings</code> is empty, you can do the following:</p><div 
class="highlight scala"><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="k">import</span> <span 
class="nn">org.apache.predictionio.controller.SanityCheck</span> <span 
class="c1">// ADDED
-</span>
-<span class="k">class</span> <span class="nc">TrainingData</span><span 
class="o">(</span>
-  <span class="k">val</span> <span class="n">ratings</span><span 
class="k">:</span> <span class="kt">RDD</span><span class="o">[</span><span 
class="kt">Rating</span><span class="o">]</span>
-<span class="o">)</span> <span class="k">extends</span> <span 
class="nc">Serializable</span> <span class="k">with</span> <span 
class="nc">SanityCheck</span> <span class="o">{</span> <span class="c1">// 
EXTEND SanityCheck
-</span>  <span class="k">override</span> <span class="k">def</span> <span 
class="n">toString</span> <span class="k">=</span> <span class="o">{</span>
-    <span class="n">s</span><span class="s">"ratings: [${ratings.count()}] 
(${ratings.take(2).toList}...)"</span>
-  <span class="o">}</span>
-
-  <span class="c1">// IMPLEMENT sanityCheck()
-</span>  <span class="k">override</span> <span class="k">def</span> <span 
class="n">sanityCheck</span><span class="o">()</span><span class="k">:</span> 
<span class="kt">Unit</span> <span class="o">=</span> <span class="o">{</span>
-    <span class="n">println</span><span class="o">(</span><span 
class="n">toString</span><span class="o">())</span>
-    <span class="c1">// add your other checking here
-</span>    <span class="n">require</span><span class="o">(!</span><span 
class="n">ratings</span><span class="o">.</span><span 
class="n">take</span><span class="o">(</span><span class="mi">1</span><span 
class="o">).</span><span class="n">isEmpty</span><span class="o">,</span> <span 
class="n">s</span><span class="s">"ratings cannot be empty!"</span><span 
class="o">)</span>
-  <span class="o">}</span>
-<span class="o">}</span>
-</pre></td></tr></tbody></table> </div> <p>You may also use together with 
--stop-after-read flag to debug the DataSource:</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>pio build
-pio train --stop-after-read
-</pre></td></tr></tbody></table> </div> <p>If your data is empty, you should 
see the following error thrown by the <code>sanityCheck()</code> 
function:</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
-7
-8
-9</pre></td><td class="code"><pre><span class="o">[</span>INFO] <span 
class="o">[</span>CoreWorkflow<span class="nv">$]</span> Performing data sanity 
check on training data.
-<span class="o">[</span>INFO] <span class="o">[</span>CoreWorkflow<span 
class="nv">$]</span> org.template.recommendation.TrainingData supports data 
sanity check. Performing check.
-Exception <span class="k">in </span>thread <span class="s2">"main"</span> 
java.lang.IllegalArgumentException: requirement failed: ratings cannot be empty!
-    at scala.Predef<span class="nv">$.</span>require<span 
class="o">(</span>Predef.scala:233<span class="o">)</span>
-    at org.template.recommendation.TrainingData.sanityCheck<span 
class="o">(</span>DataSource.scala:73<span class="o">)</span>
-    at org.apache.predictionio.workflow.CoreWorkflow<span 
class="nv">$$</span>anonfun<span 
class="nv">$runTypelessContext$7</span>.apply<span 
class="o">(</span>Workflow.scala:474<span class="o">)</span>
-    at org.apache.predictionio.workflow.CoreWorkflow<span 
class="nv">$$</span>anonfun<span 
class="nv">$runTypelessContext$7</span>.apply<span 
class="o">(</span>Workflow.scala:465<span class="o">)</span>
-    at scala.collection.immutable.Map<span 
class="nv">$Map1</span>.foreach<span class="o">(</span>Map.scala:109<span 
class="o">)</span>
-  ...
-</pre></td></tr></tbody></table> </div> <p>You can specify the 
<code>--skip-sanity-check</code> option to turn off sanityCheck:</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>pio train --stop-after-read --skip-sanity-check
-</pre></td></tr></tbody></table> </div> <p>You should see the checking is 
skipped such as 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
-3
-4</pre></td><td class="code"><pre><span class="o">[</span>INFO] <span 
class="o">[</span>CoreWorkflow<span class="nv">$]</span> Data sanity checking 
is off.
-<span class="o">[</span>INFO] <span class="o">[</span>CoreWorkflow<span 
class="nv">$]</span> Data Source
-...
-<span class="o">[</span>INFO] <span class="o">[</span>CoreWorkflow<span 
class="nv">$]</span> Training interrupted by 
org.apache.predictionio.workflow.StopAfterReadInterruption.
-</pre></td></tr></tbody></table> </div> <h2 id='engine-status-page' 
class='header-anchors'>Engine Status Page</h2><p>After run <code>pio 
deploy</code>, you can access the engine status page by go to same URL and port 
of the deployed engine with your browser, which is &quot;<a 
href="http://localhost:8000";>http://localhost:8000</a>&quot; by default. In the 
engine status page, you can find the Engine information, and parameters of each 
DASE components. In particular, you can also see the &quot;Model&quot; trained 
by the algorithm based on how <code>toString()</code> method is implemented in 
the Algorithm&#39;s Model class.</p><h2 id='pio-shell' 
class='header-anchors'>pio-shell</h2><p>Apache PredictionIO (incubating) also 
provides <code>pio-shell</code> in which you can easily access Apache 
PredictionIO (incubating) API, Spark context and Spark API for quickly testing 
code or debugging purposes.</p><p>To bring up the shell, simply run:</p><div 
class="highlight shell"><table style="borde
 r-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-shell --with-spark
-</pre></td></tr></tbody></table> </div> <p>(<code>pio-shell</code> is 
available inside <code>bin/</code> directory of installed Apache PredictionIO 
(incubating) directory, you should be able to access it if you have added 
PredictionIO/bin into your environment variable <code>PATH</code>)</p><p>Note 
that the Spark context is available as variable <code>sc</code> inside the 
shell.</p><p>For example, to get the events of <code>MyApp1</code> using 
PEventStore API inside the pio-shell and collect them into an array 
<code>c</code>. run the following in the shell:</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</pre></td><td class="code"><pre><span class="gp">&gt; </span>import 
org.apache.predictionio.data.store.PEventStore
-<span class="gp">&gt; </span>val eventsRDD <span class="o">=</span> 
PEventStore.find<span class="o">(</span><span class="nv">appName</span><span 
class="o">=</span><span class="s2">"MyApp1"</span><span 
class="o">)(</span>sc<span class="o">)</span>
-<span class="gp">&gt; </span>val c <span class="o">=</span> 
eventsRDD.collect<span class="o">()</span>
-</pre></td></tr></tbody></table> </div> <p>Then you should see following 
returned in the shell:</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</pre></td><td class="code"><pre>...
-15/05/18 14:24:42 INFO DAGScheduler: Job 0 finished: collect at 
&lt;console&gt;:24, took 1.850779 s
-c: Array[org.apache.predictionio.data.storage.Event] <span class="o">=</span> 
Array<span class="o">(</span>Event<span class="o">(</span><span 
class="nv">id</span><span class="o">=</span>Some<span 
class="o">(</span>AaQUUBsFZxteRpDV_7fDGQAAAU1ZfRW1tX9LSWdZSb0<span 
class="o">)</span>,event<span class="o">=</span><span 
class="nv">$set</span>,eType<span class="o">=</span>item,eId<span 
class="o">=</span>i42,tType<span class="o">=</span>None,tId<span 
class="o">=</span>None,p<span class="o">=</span>DataMap<span 
class="o">(</span>Map<span class="o">(</span>categories -&gt; JArray<span 
class="o">(</span>List<span class="o">(</span>JString<span 
class="o">(</span>c2<span class="o">)</span>, JString<span 
class="o">(</span>c1<span class="o">)</span>, JString<span 
class="o">(</span>c6<span class="o">)</span>, JString<span 
class="o">(</span>c3<span class="o">)))))</span>,t<span 
class="o">=</span>2015-05-15T21:31:19.349Z,tags<span 
class="o">=</span>List<span class="o">()</span>,pKey<span class="o">=
 </span>None,ct<span class="o">=</span>2015-05-15T21:31:19.354Z<span 
class="o">)</span>, Event<span class="o">(</span><span 
class="nv">id</span><span class="o">=</span>Some<span 
class="o">(</span>DjvP3Dnci9F4CWmiqoLabQAAAU1ZfROaqdRYO-pZ_no<span 
class="o">)</span>,event<span class="o">=</span><span 
class="nv">$set</span>,eType<span class="o">=</span>user,eId<span 
class="o">=</span>u9,tType<span class="o">=</span>None,tId<span 
class="o">=</span>None,p<span class="o">=</span>DataMap<span 
class="o">(</span>Map<span class="o">())</span>,t<span 
class="o">=</span>2015-05-15T21:31:18.810Z,tags<span 
class="o">=</span>List<span class="o">()</span>,pKey<span 
class="o">=</span>None,ct<span class="o">=</span>2015-05-15T21:31:18.817Z<span 
class="o">)</span>, Event<span class="o">(</span><span 
class="nv">id</span><span class="o">=</span>Some<span 
class="o">(</span>DjvP3Dnci9F4CWmiqoLabQAAAU1ZfRq7tsanlemwmZQ<span 
class="o">)</span>,event<span class="o">=</span>view,eType<span 
class="o">=</span>user,
 eId<span class="o">=</span>u9,tType<span class="o">=</span>Some<span 
class="o">(</span>item<span class="o">)</span>,tId<span 
class="o">=</span>Some<span class="o">(</span>i25<span 
class="o">)</span>,p<span class="o">=</span>DataMap<span 
class="o">(</span>Map<span class="o">())</span>,t<span 
class="o">=</span>2015-05-15T21:31:20.635Z,tags<span 
class="o">=</span>List<span class="o">()</span>,pKey<span 
class="o">=</span>None,ct<span class="o">=</span>2015-05-15T21:31:20.639Z<span 
class="o">)</span>, Event<span class="o">(</span><span 
class="nv">id</span><span class="o">=</span>Some<span 
class="o">(</span>DjvP3Dnci9F4CWmiqoLabQAAAU1ZfR...
-</pre></td></tr></tbody></table> </div> </div></div></div></div><footer><div 
class="container"><div class="seperator"></div><div class="row"><div 
class="col-md-6 footer-link-column"><div 
class="footer-link-column-row"><h4>Community</h4><ul><li><a 
href="//predictionio.incubator.apache.org/install/" 
target="blank">Download</a></li><li><a 
href="//predictionio.incubator.apache.org/" target="blank">Docs</a></li><li><a 
href="//github.com/apache/incubator-predictionio" 
target="blank">GitHub</a></li><li><a 
href="mailto:[email protected]"; 
target="blank">Subscribe to User Mailing List</a></li><li><a 
href="//stackoverflow.com/questions/tagged/predictionio" 
target="blank">Stackoverflow</a></li></ul></div></div><div class="col-md-6 
footer-link-column"><div 
class="footer-link-column-row"><h4>Contribute</h4><ul><li><a 
href="//predictionio.incubator.apache.org/community/contribute-code/" 
target="blank">Contribute</a></li><li><a 
href="//github.com/apache/incubator-pred
 ictionio" target="blank">Source Code</a></li><li><a 
href="//issues.apache.org/jira/browse/PIO" target="blank">Bug 
Tracker</a></li><li><a 
href="mailto:[email protected]"; 
target="blank">Subscribe to Development Mailing 
List</a></li></ul></div></div></div><div class="row"><div class="col-md-12 
footer-link-column"><a class="pull-right" 
href="http://incubator.apache.org/projects/predictionio.html";><img alt="Apache 
Incubator" src="/images/logos/apache_incubator-6954bd16.png"/></a><span>Apache 
PredictionIO is an effort undergoing incubation at The Apache Software 
Foundation (ASF), sponsored by the Apache Incubator. Incubation is required of 
all newly accepted projects until a further review indicates that the 
infrastructure, communications, and decision making process have stabilized in 
a manner consistent with other successful ASF projects. While incubation status 
is not necessarily a reflection of the completeness or stability of the code, 
it does indicate t
 hat the project has yet to be fully endorsed by the 
ASF.</span></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/apache/incubator-predictionio"; data-style="mega" 
data-count-href="/apache/incubator-predictionio/stargazers" 
data-count-api="/repos/apache/incubator-predictionio#stargazers_count" 
data-count-aria-label="# stargazers on GitHub" aria-label="Star 
apache/incubator-predictionio on GitHub">Star</a> <a class="github-button" 
href="https://github.com/apache/incubator-predictionio/fork"; 
data-icon="octicon-git-branch" data-style="mega" 
data-count-href="/apache/incubator-predictionio/network" 
data-count-api="/repos/apache/incubator-predictionio#forks_count" 
data-count-aria-label="# forks on GitHub" aria-label="Fork 
apache/incubator-predictionio on
  GitHub">Fork</a> <script id="github-bjs" async="" defer="" 
src="https://buttons.github.io/buttons.js";></script><a 
href="https://twitter.com/predictionio"; target="blank"><img alt="PredictionIO 
on Twitter" src="/images/icons/twitter-ea9dc152.png"/></a> <a 
href="https://www.facebook.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 
src="/javascripts/application-3058a372.js"></script></body></html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-predictionio-site/blob/2e6db646/customize/troubleshooting/index.html.gz
----------------------------------------------------------------------
diff --git a/customize/troubleshooting/index.html.gz 
b/customize/troubleshooting/index.html.gz
deleted file mode 100644
index f50c2c3..0000000
Binary files a/customize/troubleshooting/index.html.gz and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-predictionio-site/blob/2e6db646/datacollection/analytics-ipynb/index.html
----------------------------------------------------------------------
diff --git a/datacollection/analytics-ipynb/index.html 
b/datacollection/analytics-ipynb/index.html
deleted file mode 100644
index 42c1cfb..0000000
--- a/datacollection/analytics-ipynb/index.html
+++ /dev/null
@@ -1,91 +0,0 @@
-<!DOCTYPE html><html><head><title>Machine Learning Analytics with IPython 
Notebook</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="Machine Learning Analytics with 
IPython Notebook"/><link rel="canonical" 
href="https://predictionio.incubator.apache.org/datacollection/analytics-ipynb/"/><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-3a3867f7.css" 
rel="stylesheet" type="text/css"/><script 
src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.
 7.2/html5shiv.min.js"></script><script 
src="//cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script><script
 src="//use.typekit.net/pqo0itb.js"></script><script>try{Typekit.load({ async: 
true });}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://predictionio.incubator.apache.org/";><img 
alt="PredictionIO" id="logo" 
src="/images/logos/logo-ee2b9bb3.png"/></a></div><div id="menu-wrapper"><div 
id="pill-wrapper"><a class="pill left" 
href="/gallery/template-gallery">TEMPLATES</a> <a class="pill right" 
href="//github.com/apache/incubator-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>Machine Learning Analytics with IPython Notebook</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"
  href="/batchpredict/"><span>Batch Predictions</span></a></li><li 
class="level-2"><a class="final" href="/deploy/monitoring/"><span>Monitoring 
Engine</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><li class="level-2"><a class="final" 
href="/deploy/plugin/"><span>Engine Server Plugin</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>En
 gine 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="/datacollection/"><span>Event Server Overview</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><li class="level-2"><a class="final" href="/datacollection
 /plugin/"><span>Event Server Plugin</span></a></li></ul></li><li 
class="level-1"><a class="expandible" href="#"><span>Choosing an 
Algorithm(s)</span></a><ul><li class="level-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>Eval
 uation 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>PredictionIO Official 
Templates</span></a><ul><li class="level-2"><a class="final" 
href="/templates/"><span>Intro</span></a></li><li class="level-2"><a 
class="expandible" href="#"><span>Recommendation</span></a><ul><li 
class="level-3"><a class="final" 
href="/templates/recommendation/quickstart/"><span>Quick 
Start</span></a></li><li class="level-3
 "><a class="final" 
href="/templates/recommendation/dase/"><span>DASE</span></a></li><li 
class="level-3"><a class="final" 
href="/templates/recommendation/evaluation/"><span>Evaluation 
Explained</span></a></li><li class="level-3"><a class="final" 
href="/templates/recommendation/how-to/"><span>How-To</span></a></li><li 
class="level-3"><a class="final" 
href="/templates/recommendation/reading-custom-events/"><span>Read Custom 
Events</span></a></li><li class="level-3"><a class="final" 
href="/templates/recommendation/customize-data-prep/"><span>Customize Data 
Preparator</span></a></li><li class="level-3"><a class="final" 
href="/templates/recommendation/customize-serving/"><span>Customize 
Serving</span></a></li><li class="level-3"><a class="final" 
href="/templates/recommendation/training-with-implicit-preference/"><span>Train 
with Implicit Preference</span></a></li><li class="level-3"><a class="final" 
href="/templates/recommendation/blacklist-items/"><span>Filter Recommended 
Items by Blackl
 ist in Query</span></a></li><li class="level-3"><a class="final" 
href="/templates/recommendation/batch-evaluator/"><span>Batch Persistable 
Evaluator</span></a></li></ul></li><li class="level-2"><a class="expandible" 
href="#"><span>E-Commerce Recommendation</span></a><ul><li class="level-3"><a 
class="final" href="/templates/ecommercerecommendation/quickstart/"><span>Quick 
Start</span></a></li><li class="level-3"><a class="final" 
href="/templates/ecommercerecommendation/dase/"><span>DASE</span></a></li><li 
class="level-3"><a class="final" 
href="/templates/ecommercerecommendation/how-to/"><span>How-To</span></a></li><li
 class="level-3"><a class="final" 
href="/templates/ecommercerecommendation/train-with-rate-event/"><span>Train 
with Rate Event</span></a></li><li class="level-3"><a class="final" 
href="/templates/ecommercerecommendation/adjust-score/"><span>Adjust 
Score</span></a></li></ul></li><li class="level-2"><a class="expandible" 
href="#"><span>Similar Product</span></a><ul><li cla
 ss="level-3"><a class="final" 
href="/templates/similarproduct/quickstart/"><span>Quick 
Start</span></a></li><li class="level-3"><a class="final" 
href="/templates/similarproduct/dase/"><span>DASE</span></a></li><li 
class="level-3"><a class="final" 
href="/templates/similarproduct/how-to/"><span>How-To</span></a></li><li 
class="level-3"><a class="final" 
href="/templates/similarproduct/multi-events-multi-algos/"><span>Multiple 
Events and Multiple Algorithms</span></a></li><li class="level-3"><a 
class="final" 
href="/templates/similarproduct/return-item-properties/"><span>Returns Item 
Properties</span></a></li><li class="level-3"><a class="final" 
href="/templates/similarproduct/train-with-rate-event/"><span>Train with Rate 
Event</span></a></li><li class="level-3"><a class="final" 
href="/templates/similarproduct/rid-user-set-event/"><span>Get Rid of Events 
for Users</span></a></li><li class="level-3"><a class="final" 
href="/templates/similarproduct/recommended-user/"><span>Recommend Users<
 /span></a></li></ul></li><li class="level-2"><a class="expandible" 
href="#"><span>Classification</span></a><ul><li class="level-3"><a 
class="final" href="/templates/classification/quickstart/"><span>Quick 
Start</span></a></li><li class="level-3"><a class="final" 
href="/templates/classification/dase/"><span>DASE</span></a></li><li 
class="level-3"><a class="final" 
href="/templates/classification/how-to/"><span>How-To</span></a></li><li 
class="level-3"><a class="final" 
href="/templates/classification/add-algorithm/"><span>Use Alternative 
Algorithm</span></a></li><li class="level-3"><a class="final" 
href="/templates/classification/reading-custom-properties/"><span>Read Custom 
Properties</span></a></li></ul></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="/gallery/template-gallery/"><span>Browse</span></a></li><li 
class="level-2"><a class="final" href="/community/submit-template/"><spa
 n>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/c
 ontribute-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" 
href="/resources/faq/"><span>FAQs</span></a></li><li class="level-2"><a 
class="final" href="/support/"><span>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="/cli/"><span>Command-line Interface</span></a></li><li class="level-2"><a 
class="final" href="/resources/release/"><span>Release 
Cadence</span></a></li><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="/resourc
 es/glossary/"><span>Glossary</span></a></li></ul></li><li class="level-1"><a 
class="expandible" href="#"><span>Apache Software Foundation</span></a><ul><li 
class="level-2"><a class="final" href="https://www.apache.org/";><span>Apache 
Homepage</span></a></li><li class="level-2"><a class="final" 
href="https://www.apache.org/licenses/";><span>License</span></a></li><li 
class="level-2"><a class="final" 
href="https://www.apache.org/foundation/sponsorship.html";><span>Sponsorship</span></a></li><li
 class="level-2"><a class="final" 
href="https://www.apache.org/foundation/thanks.html";><span>Thanks</span></a></li><li
 class="level-2"><a class="final" 
href="https://www.apache.org/security/";><span>Security</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>Machine Learning Analytics with IPython 
Notebook</h1></div></div><div id="table-of-content-wrapper"><h5>On this 
page</h5><aside id="table-of-contents
 "><ul> <li> <a href="#prerequisites">Prerequisites</a> </li> <li> <a 
href="#preparing-ipython-notebook">Preparing IPython Notebook</a> </li> <li> <a 
href="#performing-analysis-with-spark-sql">Performing Analysis with Spark 
SQL</a> </li> </ul> </aside><hr/><a id="edit-page-link" 
href="https://github.com/apache/incubator-predictionio/tree/livedoc/docs/manual/source/datacollection/analytics-ipynb.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>Machine 
Learning Analytics with IPython Notebook</h1></div></div><div class="content"> 
<p><a href="http://ipython.org/notebook.html";>IPython Notebook</a> is a very 
powerful interactive computational environment, and with <a 
href="http://predictionio.incubator.apache.org";>Apache PredictionIO 
(incubating)</a>, <a 
href="http://spark.apache.org/docs/latest/api/python/";>PySpark</a> and <a 
href="https://spark.apache.org/sql/";>Spark SQL</a>, 
 you can easily analyze your collected events when you are developing or tuning 
your engine.</p><h2 id='prerequisites' 
class='header-anchors'>Prerequisites</h2><p>Before you begin, please make sure 
you have the latest stable IPython installed, and that the command 
<code>ipython</code> can be accessed from your shell&#39;s search path.</p> 
<p><h2 id='export-events-to-apache-parquet' class='header-anchors'>Export 
Events to Apache Parquet</h2><p>PredictionIO supports exporting your events to 
<a href="http://parquet.incubator.apache.org/";>Apache Parquet</a>, a columnar 
storage format that allows you to query quickly.</p><p>Let&#39;s export the 
data we imported in <a 
href="/templates/recommendation/quickstart/#import-sample-data">Recommendation 
Engine Template Quick Start</a>, and assume the App ID is 1.</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 cla
 ss="gp">$ </span><span class="nv">$PIO_HOME</span>/bin/pio <span 
class="nb">export</span> --appid 1 --output /tmp/movies --format parquet
-</pre></td></tr></tbody></table> </div> <p>After the command has finished 
successfully, you should see something 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
-3
-4
-5
-6
-7
-8
-9
-10
-11</pre></td><td class="code"><pre>root
- |-- creationTime: string <span class="o">(</span>nullable <span 
class="o">=</span> <span class="nb">true</span><span class="o">)</span>
- |-- entityId: string <span class="o">(</span>nullable <span 
class="o">=</span> <span class="nb">true</span><span class="o">)</span>
- |-- entityType: string <span class="o">(</span>nullable <span 
class="o">=</span> <span class="nb">true</span><span class="o">)</span>
- |-- event: string <span class="o">(</span>nullable <span class="o">=</span> 
<span class="nb">true</span><span class="o">)</span>
- |-- eventId: string <span class="o">(</span>nullable <span class="o">=</span> 
<span class="nb">true</span><span class="o">)</span>
- |-- eventTime: string <span class="o">(</span>nullable <span 
class="o">=</span> <span class="nb">true</span><span class="o">)</span>
- |-- properties: struct <span class="o">(</span>nullable <span 
class="o">=</span> <span class="nb">true</span><span class="o">)</span>
- |    |-- rating: double <span class="o">(</span>nullable <span 
class="o">=</span> <span class="nb">true</span><span class="o">)</span>
- |-- targetEntityId: string <span class="o">(</span>nullable <span 
class="o">=</span> <span class="nb">true</span><span class="o">)</span>
- |-- targetEntityType: string <span class="o">(</span>nullable <span 
class="o">=</span> <span class="nb">true</span><span class="o">)</span>
-</pre></td></tr></tbody></table> </div></p><h2 id='preparing-ipython-notebook' 
class='header-anchors'>Preparing IPython Notebook</h2><p>Launch IPython 
Notebook with PySpark using the following command, with 
<code>$SPARK_HOME</code> replaced by the location of Apache Spark.</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">PYSPARK_DRIVER_PYTHON</span><span class="o">=</span>ipython <span 
class="nv">PYSPARK_DRIVER_PYTHON_OPTS</span><span class="o">=</span><span 
class="s2">"notebook --pylab inline"</span> <span 
class="nv">$SPARK_HOME</span>/bin/pyspark
-</pre></td></tr></tbody></table> </div> <p>If you see a error appearing in the 
console like this:</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>E 10:07:53.900 
NotebookApp] Support <span class="k">for </span>specifying --pylab on the <span 
class="nb">command </span>line has been removed.
-<span class="o">[</span>E 10:07:53.901 NotebookApp] Please use <span 
class="sb">`</span>%pylab inline<span class="sb">`</span> or <span 
class="sb">`</span>%matplotlib inline<span class="sb">`</span> <span 
class="k">in </span>the notebook itself.
-</pre></td></tr></tbody></table> </div> <p>Then you can use 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="nv">PYSPARK_DRIVER_PYTHON</span><span class="o">=</span>ipython <span 
class="nv">PYSPARK_DRIVER_PYTHON_OPTS</span><span class="o">=</span><span 
class="s2">"notebook --</span><span class="sb">`</span>%pylab inline<span 
class="sb">`</span><span class="s2">"</span> <span 
class="nv">$SPARK_HOME</span>/bin/pyspark
-</pre></td></tr></tbody></table> </div> <p>By default, you should be able to 
access your IPython Notebook via web browser at <a 
href="http://localhost:8888";>http://localhost:8888</a>.</p><p>Let&#39;s 
initialize our notebook for the following code in the first cell.</p><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</pre></td><td class="code"><pre><span class="kn">import</span> <span 
class="nn">pandas</span> <span class="kn">as</span> <span class="nn">pd</span>
-<span class="k">def</span> <span class="nf">rows_to_df</span><span 
class="p">(</span><span class="n">rows</span><span class="p">):</span>
-    <span class="k">return</span> <span class="n">pd</span><span 
class="o">.</span><span class="n">DataFrame</span><span class="p">(</span><span 
class="nb">map</span><span class="p">(</span><span class="k">lambda</span> 
<span class="n">e</span><span class="p">:</span> <span class="n">e</span><span 
class="o">.</span><span class="n">asDict</span><span class="p">(),</span> <span 
class="n">rows</span><span class="p">))</span>
-<span class="kn">from</span> <span class="nn">pyspark.sql</span> <span 
class="kn">import</span> <span class="n">SQLContext</span>
-<span class="n">sqlc</span> <span class="o">=</span> <span 
class="n">SQLContext</span><span class="p">(</span><span 
class="n">sc</span><span class="p">)</span>
-<span class="n">rdd</span> <span class="o">=</span> <span 
class="n">sqlc</span><span class="o">.</span><span 
class="n">parquetFile</span><span class="p">(</span><span 
class="s">"/tmp/movies"</span><span class="p">)</span>
-<span class="n">rdd</span><span class="o">.</span><span 
class="n">registerTempTable</span><span class="p">(</span><span 
class="s">"events"</span><span class="p">)</span>
-</pre></td></tr></tbody></table> </div> <p><img alt="Initialization for 
IPython Notebook" 
src="/images/datacollection/ipynb-01-004d791e.png"/></p><p><code>rows_to_df(rows)</code>
 will come in handy when we want to dump the results from Spark SQL using 
IPython Notebook&#39;s native table rendering.</p><h2 
id='performing-analysis-with-spark-sql' class='header-anchors'>Performing 
Analysis with Spark SQL</h2><p>If all steps above ran successfully, you should 
have a ready-to-use analytics environment by now. Let&#39;s try a few examples 
to see if everything is functional.</p><p>In the second cell, put in this piece 
of code and run it.</p><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</pre></td><td class="code"><pre><span class="n">summary</span> <span 
class="o">=</span> <span class="n">sqlc</span><span class="o">.</span><span 
class="n">sql</span><span class="p">(</span><span class="s">"SELECT "</span>
-                   <span class="s">"entityType, event, targetEntityType, 
COUNT(*) AS c "</span>
-                   <span class="s">"FROM events "</span>
-                   <span class="s">"GROUP BY entityType, event, 
targetEntityType"</span><span class="p">)</span><span class="o">.</span><span 
class="n">collect</span><span class="p">()</span>
-<span class="n">rows_to_df</span><span class="p">(</span><span 
class="n">summary</span><span class="p">)</span>
-</pre></td></tr></tbody></table> </div> <p>You should see the following 
screen.</p><p><img alt="Summary of Events" 
src="/images/datacollection/ipynb-02-cd8b12e4.png"/></p><p>We can also plot our 
data, in the next two cells.</p><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</pre></td><td class="code"><pre><span class="kn">import</span> <span 
class="nn">matplotlib.pyplot</span> <span class="kn">as</span> <span 
class="nn">plt</span>
-<span class="n">count</span> <span class="o">=</span> <span 
class="nb">map</span><span class="p">(</span><span class="k">lambda</span> 
<span class="n">e</span><span class="p">:</span> <span class="n">e</span><span 
class="o">.</span><span class="n">c</span><span class="p">,</span> <span 
class="n">summary</span><span class="p">)</span>
-<span class="n">event</span> <span class="o">=</span> <span 
class="nb">map</span><span class="p">(</span><span class="k">lambda</span> 
<span class="n">e</span><span class="p">:</span> <span class="s">"</span><span 
class="si">%</span><span class="s">s (</span><span class="si">%</span><span 
class="s">d)"</span> <span class="o">%</span> <span class="p">(</span><span 
class="n">e</span><span class="o">.</span><span class="n">event</span><span 
class="p">,</span> <span class="n">e</span><span class="o">.</span><span 
class="n">c</span><span class="p">),</span> <span class="n">summary</span><span 
class="p">)</span>
-<span class="n">colors</span> <span class="o">=</span> <span 
class="p">[</span><span class="s">'gold'</span><span class="p">,</span> <span 
class="s">'lightskyblue'</span><span class="p">]</span>
-<span class="n">plt</span><span class="o">.</span><span 
class="n">pie</span><span class="p">(</span><span class="n">count</span><span 
class="p">,</span> <span class="n">labels</span><span class="o">=</span><span 
class="n">event</span><span class="p">,</span> <span 
class="n">colors</span><span class="o">=</span><span 
class="n">colors</span><span class="p">,</span> <span 
class="n">startangle</span><span class="o">=</span><span 
class="mi">90</span><span class="p">,</span> <span 
class="n">autopct</span><span class="o">=</span><span class="s">"</span><span 
class="si">%1.1</span><span class="s">f</span><span class="si">%%</span><span 
class="s">"</span><span class="p">)</span>
-<span class="n">plt</span><span class="o">.</span><span 
class="n">axis</span><span class="p">(</span><span 
class="s">'equal'</span><span class="p">)</span>
-<span class="n">plt</span><span class="o">.</span><span 
class="n">show</span><span class="p">()</span>
-</pre></td></tr></tbody></table> </div> <p><img alt="Summary in Pie Chart" 
src="/images/datacollection/ipynb-03-28f3aa3d.png"/></p><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</pre></td><td class="code"><pre><span class="n">ratings</span> <span 
class="o">=</span> <span class="n">sqlc</span><span class="o">.</span><span 
class="n">sql</span><span class="p">(</span><span class="s">"SELECT 
properties.rating AS r, COUNT(*) AS c "</span>
-                   <span class="s">"FROM events "</span>
-                   <span class="s">"WHERE properties.rating IS NOT NULL 
"</span>
-                   <span class="s">"GROUP BY properties.rating "</span>
-                   <span class="s">"ORDER BY r"</span><span 
class="p">)</span><span class="o">.</span><span class="n">collect</span><span 
class="p">()</span>
-<span class="n">count</span> <span class="o">=</span> <span 
class="nb">map</span><span class="p">(</span><span class="k">lambda</span> 
<span class="n">e</span><span class="p">:</span> <span class="n">e</span><span 
class="o">.</span><span class="n">c</span><span class="p">,</span> <span 
class="n">ratings</span><span class="p">)</span>
-<span class="n">rating</span> <span class="o">=</span> <span 
class="nb">map</span><span class="p">(</span><span class="k">lambda</span> 
<span class="n">e</span><span class="p">:</span> <span class="s">"</span><span 
class="si">%</span><span class="s">s (</span><span class="si">%</span><span 
class="s">d)"</span> <span class="o">%</span> <span class="p">(</span><span 
class="n">e</span><span class="o">.</span><span class="n">r</span><span 
class="p">,</span> <span class="n">e</span><span class="o">.</span><span 
class="n">c</span><span class="p">),</span> <span class="n">ratings</span><span 
class="p">)</span>
-<span class="n">colors</span> <span class="o">=</span> <span 
class="p">[</span><span class="s">'yellowgreen'</span><span class="p">,</span> 
<span class="s">'plum'</span><span class="p">,</span> <span 
class="s">'gold'</span><span class="p">,</span> <span 
class="s">'lightskyblue'</span><span class="p">,</span> <span 
class="s">'lightcoral'</span><span class="p">]</span>
-<span class="n">plt</span><span class="o">.</span><span 
class="n">pie</span><span class="p">(</span><span class="n">count</span><span 
class="p">,</span> <span class="n">labels</span><span class="o">=</span><span 
class="n">rating</span><span class="p">,</span> <span 
class="n">colors</span><span class="o">=</span><span 
class="n">colors</span><span class="p">,</span> <span 
class="n">startangle</span><span class="o">=</span><span 
class="mi">90</span><span class="p">,</span>
-        <span class="n">autopct</span><span class="o">=</span><span 
class="s">"</span><span class="si">%1.1</span><span class="s">f</span><span 
class="si">%%</span><span class="s">"</span><span class="p">)</span>
-<span class="n">plt</span><span class="o">.</span><span 
class="n">axis</span><span class="p">(</span><span 
class="s">'equal'</span><span class="p">)</span>
-<span class="n">plt</span><span class="o">.</span><span 
class="n">show</span><span class="p">()</span>
-</pre></td></tr></tbody></table> </div> <p><img alt="Breakdown of Ratings" 
src="/images/datacollection/ipynb-04-797d73f1.png"/></p><p>Happy 
analyzing!</p></div></div></div></div><footer><div class="container"><div 
class="seperator"></div><div class="row"><div class="col-md-6 
footer-link-column"><div 
class="footer-link-column-row"><h4>Community</h4><ul><li><a 
href="//predictionio.incubator.apache.org/install/" 
target="blank">Download</a></li><li><a 
href="//predictionio.incubator.apache.org/" target="blank">Docs</a></li><li><a 
href="//github.com/apache/incubator-predictionio" 
target="blank">GitHub</a></li><li><a 
href="mailto:[email protected]"; 
target="blank">Subscribe to User Mailing List</a></li><li><a 
href="//stackoverflow.com/questions/tagged/predictionio" 
target="blank">Stackoverflow</a></li></ul></div></div><div class="col-md-6 
footer-link-column"><div 
class="footer-link-column-row"><h4>Contribute</h4><ul><li><a 
href="//predictionio.incubator.apache
 .org/community/contribute-code/" target="blank">Contribute</a></li><li><a 
href="//github.com/apache/incubator-predictionio" target="blank">Source 
Code</a></li><li><a href="//issues.apache.org/jira/browse/PIO" 
target="blank">Bug Tracker</a></li><li><a 
href="mailto:[email protected]"; 
target="blank">Subscribe to Development Mailing 
List</a></li></ul></div></div></div><div class="row"><div class="col-md-12 
footer-link-column"><a class="pull-right" 
href="http://incubator.apache.org/projects/predictionio.html";><img alt="Apache 
Incubator" src="/images/logos/apache_incubator-6954bd16.png"/></a><span>Apache 
PredictionIO is an effort undergoing incubation at The Apache Software 
Foundation (ASF), sponsored by the Apache Incubator. Incubation is required of 
all newly accepted projects until a further review indicates that the 
infrastructure, communications, and decision making process have stabilized in 
a manner consistent with other successful ASF projects. While 
 incubation status is not necessarily a reflection of the completeness or 
stability of the code, it does indicate that the project has yet to be fully 
endorsed by the ASF.</span></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/apache/incubator-predictionio"; data-style="mega" 
data-count-href="/apache/incubator-predictionio/stargazers" 
data-count-api="/repos/apache/incubator-predictionio#stargazers_count" 
data-count-aria-label="# stargazers on GitHub" aria-label="Star 
apache/incubator-predictionio on GitHub">Star</a> <a class="github-button" 
href="https://github.com/apache/incubator-predictionio/fork"; 
data-icon="octicon-git-branch" data-style="mega" 
data-count-href="/apache/incubator-predictionio/network" 
data-count-api="/repos/apache/incubator-pre
 dictionio#forks_count" data-count-aria-label="# forks on GitHub" 
aria-label="Fork apache/incubator-predictionio on GitHub">Fork</a> <script 
id="github-bjs" async="" defer="" 
src="https://buttons.github.io/buttons.js";></script><a 
href="https://twitter.com/predictionio"; target="blank"><img alt="PredictionIO 
on Twitter" src="/images/icons/twitter-ea9dc152.png"/></a> <a 
href="https://www.facebook.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 
src="/javascripts/application-3058a372.js"></script></body></html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-predictionio-site/blob/2e6db646/datacollection/analytics-ipynb/index.html.gz
----------------------------------------------------------------------
diff --git a/datacollection/analytics-ipynb/index.html.gz 
b/datacollection/analytics-ipynb/index.html.gz
deleted file mode 100644
index d256cde..0000000
Binary files a/datacollection/analytics-ipynb/index.html.gz and /dev/null differ

Reply via email to