Author: buildbot
Date: Tue Apr 14 00:16:42 2015
New Revision: 947474

Log:
Staging update by buildbot for mahout

Added:
    
websites/staging/mahout/trunk/content/users/environment/in-core-reference.html
Modified:
    websites/staging/mahout/trunk/content/   (props changed)

Propchange: websites/staging/mahout/trunk/content/
------------------------------------------------------------------------------
--- cms:source-revision (original)
+++ cms:source-revision Tue Apr 14 00:16:42 2015
@@ -1 +1 @@
-1673091
+1673322

Added: 
websites/staging/mahout/trunk/content/users/environment/in-core-reference.html
==============================================================================
--- 
websites/staging/mahout/trunk/content/users/environment/in-core-reference.html 
(added)
+++ 
websites/staging/mahout/trunk/content/users/environment/in-core-reference.html 
Tue Apr 14 00:16:42 2015
@@ -0,0 +1,611 @@
+<!DOCTYPE html>
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+<html xmlns="http://www.w3.org/1999/xhtml"; xml:lang="en" lang="en"><head><meta 
http-equiv="Content-Type" content="text/html; charset=UTF-8">
+  <title>Apache Mahout: Scalable machine learning and data mining</title>
+  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+  <meta name="Distribution" content="Global">
+  <meta name="Robots" content="index,follow">
+  <meta name="keywords" content="apache, apache hadoop, apache lucene,
+        business data mining, cluster analysis,
+        collaborative filtering, data extraction, data filtering, data 
framework, data integration,
+        data matching, data mining, data mining algorithms, data mining 
analysis, data mining data,
+        data mining introduction, data mining software,
+        data mining techniques, data representation, data set, datamining,
+        feature extraction, fuzzy k means, genetic algorithm, hadoop,
+        hierarchical clustering, high dimensional, introduction to data 
mining, kmeans,
+        knowledge discovery, learning approach, learning approaches, learning 
methods,
+        learning techniques, lucene, machine learning, machine translation, 
mahout apache,
+        mahout taste, map reduce hadoop, mining data, mining methods, naive 
bayes,
+        natural language processing,
+        supervised, text mining, time series data, unsupervised, web data 
mining">
+  <link rel="shortcut icon" type="image/x-icon" 
href="http://mahout.apache.org/images/favicon.ico";>
+  <script type="text/javascript" src="/js/prototype.js"></script>
+  <script type="text/javascript" src="/js/effects.js"></script>
+  <script type="text/javascript" src="/js/search.js"></script>
+  <script type="text/javascript" src="/js/slides.js"></script>
+
+  <link href="/css/bootstrap.min.css" rel="stylesheet" media="screen">
+  <link href="/css/bootstrap-responsive.css" rel="stylesheet">
+  <link rel="stylesheet" href="/css/global.css" type="text/css">
+
+  <!-- mathJax stuff -- use `\(...\)` for inline style math in markdown -->
+  <script type="text/x-mathjax-config">
+  MathJax.Hub.Config({
+    tex2jax: {
+      skipTags: ['script', 'noscript', 'style', 'textarea', 'pre']
+    }
+  });
+  MathJax.Hub.Queue(function() {
+    var all = MathJax.Hub.getAllJax(), i;
+    for(i = 0; i < all.length; i += 1) {
+      all[i].SourceElement().parentNode.className += ' has-jax';
+    }
+  });
+  </script>
+  <script type="text/javascript">
+    var mathjax = document.createElement('script'); 
+    mathjax.type = 'text/javascript'; 
+    mathjax.async = true;
+
+    mathjax.src = ('https:' == document.location.protocol) ?
+        
'https://c328740.ssl.cf1.rackcdn.com/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML'
 : 
+        
'http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML';
+       
+         var s = document.getElementsByTagName('script')[0]; 
+    s.parentNode.insertBefore(mathjax, s);
+  </script>
+</head>
+
+<body id="home" data-twttr-rendered="true">
+  <div id="wrap">
+   <div id="header">
+    <div id="logo"><a href="/"><img src="/images/mahout-logo-brudman.png" 
alt="Logos for Mahout and Apache Software Foundation" /></a></div>
+  <div id="search">
+    <form id="search-form" action="http://www.google.com/search"; method="get" 
class="navbar-search pull-right">    
+      <input value="http://mahout.apache.org"; name="sitesearch" type="hidden">
+      <input class="search-query" name="q" id="query" type="text">
+      <input id="submission" type="image" src="/images/mahout-lupe.png" 
alt="Search" />
+    </form>
+  </div>
+
+    <div class="navbar navbar-inverse" 
style="position:absolute;top:133px;padding-right:0px;padding-left:0px;">
+      <div class="navbar-inner" style="border: none; background: #999; border: 
none; border-radius: 0px;">
+        <div class="container">
+          <button type="button" class="btn btn-navbar" data-toggle="collapse" 
data-target=".nav-collapse">
+            <span class="icon-bar"></span>
+            <span class="icon-bar"></span>
+            <span class="icon-bar"></span>
+          </button>
+          <!-- <a class="brand" href="#">Apache Community Development 
Project</a> -->
+          <div class="nav-collapse collapse">
+            <ul class="nav">
+             <!-- <li><a href="/">Home</a></li> --> 
+              <li class="dropdown"> <a href="#" class="dropdown-toggle" 
data-toggle="dropdown">General<b class="caret"></b></a>
+                <ul class="dropdown-menu">
+                  <li><a href="/general/downloads.html">Downloads</a>
+                  <li><a href="/general/who-we-are.html">Who we are</a>
+                  <li><a 
href="/general/mailing-lists,-irc-and-archives.html">Mailing Lists</a>
+                  <li><a href="/general/release-notes.html">Release Notes</a> 
+                  <li><a href="/general/books-tutorials-and-talks.html">Books, 
Tutorials, Talks</a></li>
+                  <li><a href="/general/powered-by-mahout.html">Powered By 
Mahout</a>
+                  <li><a 
href="/general/professional-support.html">Professional Support</a>
+                  <li class="divider"></li>
+                  <li class="nav-header">Resources</li>
+                  <li><a href="/general/reference-reading.html">Reference 
Reading</a>
+                  <li><a href="/general/faq.html">FAQ</a>
+                  <li class="divider"></li>
+                  <li class="nav-header">Legal</li>
+                  <li><a 
href="http://www.apache.org/licenses/";>License</a></li>
+                  <li><a 
href="http://www.apache.org/security/";>Security</a></li>
+                  <li><a href="/general/privacy-policy.html">Privacy Policy</a>
+                </ul>
+              </li>
+              <li class="dropdown"> <a href="#" class="dropdown-toggle" 
data-toggle="dropdown">Developers<b class="caret"></b></a>
+                <ul class="dropdown-menu">
+                  <li><a href="/developers/developer-resources.html">Developer 
resources</a></li>
+                  <li><a href="/developers/version-control.html">Version 
control</a></li>
+                  <li><a href="/developers/buildingmahout.html">Build from 
source</a></li>
+                  <li><a href="/developers/issue-tracker.html">Issue 
tracker</a></li>
+                  <li><a href="https://builds.apache.org/job/Mahout-Quality/"; 
target="_blank">Code quality reports</a></li>
+                  <li class="divider"></li>
+                  <li class="nav-header">Contributions</li>
+                  <li><a href="/developers/how-to-contribute.html">How to 
contribute</a></li>
+                  <li><a href="/developers/how-to-become-a-committer.html">How 
to become a committer</a></li>
+                  <li><a href="/developers/gsoc.html">GSoC</a></li>
+                  <li class="divider"></li>
+                  <li class="nav-header">For committers</li>
+                  <li><a href="/developers/how-to-update-the-website.html">How 
to update the website</a></li>
+                  <li><a href="/developers/patch-check-list.html">Patch check 
list</a></li>
+                  <li><a href="/developers/github.html">Handling Github 
PRs</a></li>
+                  <li><a href="/developers/how-to-release.html">How to 
release</a></li>
+                  <li><a href="/developers/thirdparty-dependencies.html">Third 
party dependencies</a></li>
+                </ul>
+               </li>
+               <li class="dropdown"> <a href="#" class="dropdown-toggle" 
data-toggle="dropdown">Mahout Samsara<b class="caret"></b></a>
+                <ul class="dropdown-menu">
+                  <li><a href="/users/sparkbindings/home.html">Scala &amp; 
Spark Bindings Overview</a></li>
+                  <li><a href="/users/sparkbindings/faq.html">FAQ</a></li>
+                  <li class="nav-header">Engines</li>
+                  <li><a href="/users/sparkbindings/home.html">Spark</a></li>
+                  <li><a 
href="/users/environment/h2o-internals.html">H2O</a></li>
+                  <li class="nav-header">Tutorials</li>
+                  <li><a 
href="/users/sparkbindings/play-with-shell.html">Playing with Mahout's Spark 
Shell</a></li>
+                </ul>
+              </li>
+              <li class="dropdown"> <a href="#" class="dropdown-toggle" 
data-toggle="dropdown">Algorithms<b class="caret"></b></a>
+                <ul class="dropdown-menu">
+                  <li><a href="/users/basics/algorithms.html">List of 
algorithms</a>
+                  <li class="nav-header">Distributed Matrix Decomposition</li>
+                  <li><a href="/users/algorithms/d-qr.html">Cholesky 
QR</a></li>
+                  <li><a href="/users/algorithms/d-ssvd.html">SSVD</a></li>
+                  <li class="nav-header">Recommendations</li>
+                  <li><a 
href="/users/algorithms/recommender-overview.html">Recommender Overview</a></li>
+                  <li><a 
href="/users/algorithms/intro-cooccurrence-spark.html">Intro to 
cooccurrence-based<br/> recommendations with Spark</a></li>
+                  <li class="nav-header">Classification</li>
+                  <li><a href="/users/algorithms/spark-naive-bayes.html">Spark 
Naive Bayes</a></li>
+                </ul>
+               </li>
+               <li class="dropdown"> <a href="#" class="dropdown-toggle" 
data-toggle="dropdown">MapReduce Basics<b class="caret"></b></a>
+                 <ul class="dropdown-menu">
+                  <li><a href="/users/basics/algorithms.html">List of 
algorithms</a>
+                  <li><a href="/users/basics/quickstart.html">Overview</a>
+                  <li class="divider"></li>
+                  <li class="nav-header">Working with text</li>
+                  <li><a 
href="/users/basics/creating-vectors-from-text.html">Creating vectors from 
text</a>
+                  <li><a 
href="/users/basics/collocations.html">Collocations</a>
+                  <li class="divider"></li>
+                  <li class="nav-header">Dimensionality reduction</li>
+                  <li><a 
href="/users/dim-reduction/dimensional-reduction.html">Singular Value 
Decomposition</a></li>
+                  <li><a href="/users/dim-reduction/ssvd.html">Stochastic 
SVD</a></li>
+                  <li class="divider"></li>
+                  <li class="nav-header">Topic Models</li>      
+                  <li><a 
href="/users/clustering/latent-dirichlet-allocation.html">Latent Dirichlet 
Allocation</a></li>
+                </ul>
+               </li>
+               <li class="dropdown"> <a href="#" class="dropdown-toggle" 
data-toggle="dropdown">Mahout MapReduce<b class="caret"></b></a>
+                <ul class="dropdown-menu">
+                <li class="nav-header">Classification</li>
+                  <li><a href="/users/classification/bayesian.html">Naive 
Bayes</a></li>
+                  <li><a 
href="/users/classification/hidden-markov-models.html">Hidden Markov 
Models</a></li>
+                  <li><a 
href="/users/classification/logistic-regression.html">Logistic Regression 
(Single Machine)</a></li>
+                  <li><a 
href="/users/classification/partial-implementation.html">Random Forest</a></li>
+                  <li class="nav-header">Classification Examples</li>
+                  <li><a 
href="/users/classification/breiman-example.html">Breiman example</a></li>
+                  <li><a 
href="/users/classification/twenty-newsgroups.html">20 newsgroups 
example</a></li>
+                  <li><a 
href="/users/classification/bankmarketing-example.html">SGD classifier bank 
marketing</a></li>
+                  <li><a 
href="/users/classification/wikipedia-classifier-example.html">Wikipedia XML 
parser and classifier</a></li>
+                  <li class="nav-header">Clustering</li>
+                  <li><a 
href="/users/clustering/k-means-clustering.html">k-Means</a></li>
+                  <li><a 
href="/users/clustering/canopy-clustering.html">Canopy</a></li>
+                  <li><a href="/users/clustering/fuzzy-k-means.html">Fuzzy 
k-Means</a></li>
+                  <li><a 
href="/users/clustering/streaming-k-means.html">Streaming KMeans</a></li>
+                  <li><a 
href="/users/clustering/spectral-clustering.html">Spectral Clustering</a></li>
+                  <li class="nav-header">Clustering Commandline usage</li>
+                  <li><a 
href="/users/clustering/k-means-commandline.html">Options for k-Means</a></li>
+                  <li><a 
href="/users/clustering/canopy-commandline.html">Options for Canopy</a></li>
+                  <li><a 
href="/users/clustering/fuzzy-k-means-commandline.html">Options for Fuzzy 
k-Means</a></li>
+                  <li class="nav-header">Clustering Examples</li>
+                  <li><a 
href="/users/clustering/clustering-of-synthetic-control-data.html">Synthetic 
data</a></li>
+                  <li class="nav-header">Cluster Post processing</li>
+                  <li><a href="/users/clustering/cluster-dumper.html">Cluster 
Dumper tool</a></li>
+                  <li><a 
href="/users/clustering/visualizing-sample-clusters.html">Cluster 
visualisation</a></li>
+                  <li class="nav-header">Recommendations</li>
+                  <li><a 
href="/users/recommender/recommender-first-timer-faq.html">First Timer 
FAQ</a></li>
+                  <li><a href="/users/recommender/userbased-5-minutes.html">A 
user-based recommender <br/>in 5 minutes</a></li>
+                 <li><a 
href="/users/recommender/matrix-factorization.html">Matrix 
factorization-based<br/> recommenders</a></li>
+                  <li><a 
href="/users/recommender/recommender-documentation.html">Overview</a></li>
+                  <li><a 
href="/users/recommender/intro-itembased-hadoop.html">Intro to item-based 
recommendations<br/> with Hadoop</a></li>
+                  <li><a href="/users/recommender/intro-als-hadoop.html">Intro 
to ALS recommendations<br/> with Hadoop</a></li>
+               </ul>
+              </li>
+              <!--  <li class="dropdown"> <a href="#" class="dropdown-toggle" 
data-toggle="dropdown">Recommendations<b class="caret"></b></a>
+                <ul class="dropdown-menu">
+                
+                </ul> -->
+            </li>
+           </ul>
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+
+</div>
+
+ <div id="sidebar">
+  <div id="sidebar-wrap">
+    <h2>Twitter</h2>
+       <ul class="sidemenu">
+               <li>
+<a class="twitter-timeline" href="https://twitter.com/ApacheMahout"; 
data-widget-id="422861673444028416">Tweets by @ApacheMahout</a>
+<script>!function(d,s,id){var 
js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+"://platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script>
+</li>
+       </ul>
+    <h2>Apache Software Foundation</h2>
+    <ul class="sidemenu">
+      <li><a href="http://www.apache.org/foundation/how-it-works.html";>How the 
ASF works</a></li>
+      <li><a href="http://www.apache.org/foundation/getinvolved.html";>Get 
Involved</a></li>
+      <li><a href="http://www.apache.org/dev/";>Developer Resources</a></li>
+      <li><a 
href="http://www.apache.org/foundation/sponsorship.html";>Sponsorship</a></li>
+      <li><a 
href="http://www.apache.org/foundation/thanks.html";>Thanks</a></li>
+    </ul>
+    <h2>Related Projects</h2>
+    <ul class="sidemenu">
+      <li><a href="http://lucene.apache.org/";>Lucene</a></li>
+      <li><a href="http://hadoop.apache.org/";>Hadoop</a></li>
+      <li><a href="http://bigtop.apache.org/";>Bigtop</a></li>
+      <li><a href="http://spark.apache.org/";>Spark</a></li>
+    </ul>
+  </div>
+</div>
+
+  <div id="content-wrap" class="clearfix">
+   <div id="main">
+    <h2 
id="mahout-samsaras-in-core-linear-algebra-dsl-reference">Mahout-Samsara's 
In-Core Linear Algebra DSL Reference</h2>
+<h4 id="imports">Imports</h4>
+<p>The following imports are used to enable Mahout-Samsara's Scala DSL 
bindings for in-core Linear Algebra:</p>
+<div class="codehilite"><pre><span class="n">import</span> <span 
class="n">org</span><span class="p">.</span><span class="n">apache</span><span 
class="p">.</span><span class="n">mahout</span><span class="p">.</span><span 
class="n">math</span><span class="p">.</span><span class="n">_</span>
+<span class="n">import</span> <span class="n">scalabindings</span><span 
class="p">.</span><span class="n">_</span>
+<span class="n">import</span> <span class="n">RLikeOps</span><span 
class="p">.</span><span class="n">_</span>
+</pre></div>
+
+
+<h4 id="inline-initalization">Inline initalization</h4>
+<p>Dense vectors:</p>
+<div class="codehilite"><pre>val densVec1: Vector = (1.0, 1.1, 1.2)
+val denseVec2 = dvec(1, 0, 1,1 ,1,2)
+</pre></div>
+
+
+<p>Sparse vectors:</p>
+<div class="codehilite"><pre>val sparseVec1: Vector = (5 -&gt; 1.0) :: (10 
-&gt; 2.0) :: Nil
+val sparseVec1 = svec((5 -&gt; 1.0) :: (10 -&gt; 2.0) :: Nil)
+</pre></div>
+
+
+<p>Inline matrix initialization, either sparse or dense, is always done row 
wise. </p>
+<p>Dense matrices:</p>
+<div class="codehilite"><pre><span class="n">val</span> <span 
class="n">A</span> <span class="p">=</span> <span class="n">dense</span><span 
class="p">((</span>1<span class="p">,</span> 2<span class="p">,</span> 3<span 
class="p">),</span> <span class="p">(</span>3<span class="p">,</span> 4<span 
class="p">,</span> 5<span class="p">))</span>
+</pre></div>
+
+
+<p>Sparse matrices:</p>
+<div class="codehilite"><pre><span class="n">val</span> <span 
class="n">A</span> <span class="p">=</span> <span class="n">sparse</span><span 
class="p">(</span>
+          <span class="p">(</span>1<span class="p">,</span> 3<span 
class="p">)</span> <span class="p">::</span> <span class="n">Nil</span><span 
class="p">,</span>
+          <span class="p">(</span>0<span class="p">,</span> 2<span 
class="p">)</span> <span class="p">::</span> <span class="p">(</span>1<span 
class="p">,</span> 2<span class="p">.</span>5<span class="p">)</span> <span 
class="p">::</span> <span class="n">Nil</span>
+              <span class="p">)</span>
+</pre></div>
+
+
+<p>Diagonal matrix with constant diagonal elements:</p>
+<div class="codehilite"><pre><span class="nb">diag</span><span 
class="p">(</span>10<span class="p">,</span> 3<span class="p">.</span>5<span 
class="p">)</span>
+</pre></div>
+
+
+<p>Diagonal matrix with main diagonal backed by a vector:</p>
+<div class="codehilite"><pre><span class="n">diagv</span><span 
class="p">((</span>1<span class="p">,</span> 2<span class="p">,</span> 3<span 
class="p">,</span> 4<span class="p">,</span> 5<span class="p">))</span>
+</pre></div>
+
+
+<p>Identity matrix:</p>
+<div class="codehilite"><pre><span class="nb">eye</span><span 
class="p">(</span>10<span class="p">)</span>
+</pre></div>
+
+
+<h4 id="slicing-and-assigning">Slicing and Assigning</h4>
+<p>Getting a vector element:</p>
+<div class="codehilite"><pre><span class="n">val</span> <span 
class="n">d</span> <span class="p">=</span> <span class="n">vec</span><span 
class="p">(</span>5<span class="p">)</span>
+</pre></div>
+
+
+<p>Setting a vector element:</p>
+<div class="codehilite"><pre><span class="n">vec</span><span 
class="p">(</span>5<span class="p">)</span> <span class="p">=</span> 3<span 
class="p">.</span>0
+</pre></div>
+
+
+<p>Getting a matrix element:</p>
+<div class="codehilite"><pre><span class="n">val</span> <span 
class="n">d</span> <span class="p">=</span> <span class="n">m</span><span 
class="p">(</span>3<span class="p">,</span>5<span class="p">)</span>
+</pre></div>
+
+
+<p>Setting a matrix element:</p>
+<div class="codehilite"><pre><span class="n">M</span><span 
class="p">(</span>3<span class="p">,</span>5<span class="p">)</span> <span 
class="p">=</span> 3<span class="p">.</span>0
+</pre></div>
+
+
+<p>Getting a matrix row or column:</p>
+<div class="codehilite"><pre><span class="n">val</span> <span 
class="n">rowVec</span> <span class="p">=</span> <span class="n">M</span><span 
class="p">(</span>3<span class="p">,</span> <span class="p">::)</span>
+<span class="n">val</span> <span class="n">colVec</span> <span 
class="p">=</span> <span class="n">M</span><span class="p">(::,</span> 3<span 
class="p">)</span>
+</pre></div>
+
+
+<p>Setting a matrix row or column via vector assignment:</p>
+<div class="codehilite"><pre><span class="n">M</span><span 
class="p">(</span>3<span class="p">,</span> <span class="p">::)</span> <span 
class="p">:=</span> <span class="p">(</span>1<span class="p">,</span> 2<span 
class="p">,</span> 3<span class="p">)</span>
+<span class="n">M</span><span class="p">(::,</span> 3<span class="p">)</span> 
<span class="p">:=</span> <span class="p">(</span>1<span class="p">,</span> 
2<span class="p">,</span> 3<span class="p">)</span>
+</pre></div>
+
+
+<p>Setting a subslices of a matrix row or column:</p>
+<div class="codehilite"><pre><span class="n">a</span><span 
class="p">(</span>0<span class="p">,</span> 0 <span class="n">to</span> 1<span 
class="p">)</span> <span class="p">=</span> <span class="p">(</span>3<span 
class="p">,</span> 5<span class="p">)</span>
+</pre></div>
+
+
+<p>Setting a subslices of a matrix row or column via vector assignment:</p>
+<div class="codehilite"><pre><span class="n">a</span><span 
class="p">(</span>0<span class="p">,</span> 0 <span class="n">to</span> 1<span 
class="p">)</span> <span class="p">:=</span> <span class="p">(</span>3<span 
class="p">,</span> 5<span class="p">)</span>
+</pre></div>
+
+
+<p>Getting a matrix as from matrix contiguous block:</p>
+<div class="codehilite"><pre><span class="n">val</span> <span 
class="n">B</span> <span class="p">=</span> <span class="n">A</span><span 
class="p">(</span>2 <span class="n">to</span> 3<span class="p">,</span> 3 <span 
class="n">to</span> 4<span class="p">)</span>
+</pre></div>
+
+
+<p>Assigning a contiguous block to a matrix:</p>
+<div class="codehilite"><pre><span class="n">A</span><span class="p">(</span>0 
<span class="n">to</span> 1<span class="p">,</span> 1 <span class="n">to</span> 
2<span class="p">)</span> <span class="p">=</span> <span 
class="n">dense</span><span class="p">((</span>3<span class="p">,</span> 2<span 
class="p">),</span> <span class="p">(</span>3 <span class="p">,</span>3<span 
class="p">))</span>
+</pre></div>
+
+
+<p>Assigning a contiguous block to a matrix using the matrix assignment 
operator:</p>
+<div class="codehilite"><pre><span class="n">A</span><span 
class="p">(</span><span class="n">o</span> <span class="n">to</span> 1<span 
class="p">,</span> 1 <span class="n">to</span> 2<span class="p">)</span> <span 
class="p">:=</span> <span class="n">dense</span><span class="p">((</span>3<span 
class="p">,</span> 2<span class="p">),</span> <span class="p">(</span>3<span 
class="p">,</span> 3<span class="p">))</span>
+</pre></div>
+
+
+<p>Assignment operator used for copying between vectors or matrices:</p>
+<div class="codehilite"><pre><span class="n">vec1</span> <span 
class="p">:=</span> <span class="n">vec2</span>
+<span class="n">M1</span> <span class="p">:=</span> <span class="n">M2</span>
+</pre></div>
+
+
+<p>Assignment operator using assignment through a functional literal for a 
matrix:</p>
+<div class="codehilite"><pre><span class="n">M</span> <span 
class="p">:=</span> <span class="p">((</span><span class="n">row</span><span 
class="p">,</span> <span class="n">col</span><span class="p">,</span> <span 
class="n">x</span><span class="p">)</span> <span class="p">=</span><span 
class="o">&gt;</span> <span class="k">if</span> <span class="p">(</span><span 
class="n">row</span> <span class="o">==</span> <span class="n">col</span><span 
class="p">)</span> 1 <span class="k">else</span> 0
+</pre></div>
+
+
+<p>Assignment operator using assignment through a functional literal for a 
vector:</p>
+<div class="codehilite"><pre><span class="n">vec</span> <span 
class="p">:=</span> <span class="p">((</span><span class="n">index</span><span 
class="p">,</span> <span class="n">x</span><span class="p">)</span> <span 
class="p">=</span><span class="o">&gt;</span> <span class="nb">sqrt</span><span 
class="p">(</span><span class="n">x</span><span class="p">)</span>
+</pre></div>
+
+
+<h4 id="blas-like-operations">BLAS-like operations</h4>
+<p>Plus/minus either vector or numeric with assignment or not:</p>
+<div class="codehilite"><pre><span class="n">a</span> <span class="o">+</span> 
<span class="n">b</span>
+<span class="n">a</span> <span class="o">-</span> <span class="n">b</span>
+<span class="n">a</span> <span class="o">+</span> 5<span class="p">.</span>0
+<span class="n">a</span> <span class="o">-</span> 5<span class="p">.</span>0
+</pre></div>
+
+
+<p>Hadamard (elementwise) product, either vector or matrix or numeric 
operands:</p>
+<div class="codehilite"><pre><span class="n">a</span> <span class="o">*</span> 
<span class="n">b</span>
+<span class="n">a</span> <span class="o">*</span> 0<span class="p">.</span>5
+</pre></div>
+
+
+<p>Operations with assignment:</p>
+<div class="codehilite"><pre><span class="n">a</span> <span 
class="o">+</span><span class="p">=</span> <span class="n">b</span>
+<span class="n">a</span> <span class="o">-</span><span class="p">=</span> 
<span class="n">b</span>
+<span class="n">a</span> <span class="o">+</span><span class="p">=</span> 
5<span class="p">.</span>0
+<span class="n">a</span> <span class="o">-</span><span class="p">=</span> 
5<span class="p">.</span>0
+<span class="n">a</span> <span class="o">*</span><span class="p">=</span> 
<span class="n">b</span>
+<span class="n">a</span> <span class="o">*</span><span class="p">=</span> 5
+</pre></div>
+
+
+<p><em>Some nuanced rules</em>: </p>
+<p>1/x in R (where x is a vector or a matrix) is elementwise inverse.  In 
scala it would be expressed as:</p>
+<div class="codehilite"><pre><span class="n">val</span> <span 
class="n">xInv</span> <span class="p">=</span> 1 <span class="o">/</span><span 
class="p">:</span> <span class="n">x</span>
+</pre></div>
+
+
+<p>and R's 5.0 - x would be:</p>
+<div class="codehilite"><pre><span class="n">val</span> <span 
class="n">x1</span> <span class="p">=</span> 5<span class="p">.</span>0 <span 
class="o">-</span><span class="p">:</span> <span class="n">x</span>
+</pre></div>
+
+
+<p><em>note: All assignment operations, including :=, return the assignee just 
like in C++</em>:</p>
+<div class="codehilite"><pre><span class="n">a</span> <span 
class="o">-</span><span class="p">=</span> <span class="n">b</span>
+</pre></div>
+
+
+<p>assigns <strong>a - b</strong> to <strong>b</strong> (in-place) and returns 
<strong>b</strong>.  Similarly for <strong>a /=: b</strong> or <strong>1 /=: 
v</strong> </p>
+<p>Dot product:</p>
+<div class="codehilite"><pre><span class="n">a</span> <span 
class="nb">dot</span> <span class="n">b</span>
+</pre></div>
+
+
+<p>Matrix and vector equivalency (or non-equivalency).  *Dangerous, exact 
equivalence is rarely useful, better to use norm comparisons with an allowance 
of small errors.</p>
+<div class="codehilite"><pre><span class="n">a</span> <span 
class="o">==</span><span class="p">=</span> <span class="n">b</span>
+<span class="n">a</span> !<span class="o">==</span> <span class="n">b</span>
+</pre></div>
+
+
+<p>Matrix multiply:    </p>
+<div class="codehilite"><pre><span class="n">a</span> <span class="c">%*% 
b</span>
+</pre></div>
+
+
+<p>Optimized Right Multiply with a diagonal matrix: </p>
+<div class="codehilite"><pre><span class="nb">diag</span><span 
class="p">(</span>5<span class="p">,</span> 5<span class="p">)</span> <span 
class="p">:</span><span class="c">%*% b</span>
+</pre></div>
+
+
+<p>Optimized Left Multiply with a diagonal matrix:</p>
+<div class="codehilite"><pre><span class="n">A</span> <span class="c">%*%: 
diag(5, 5)</span>
+</pre></div>
+
+
+<p>Second norm, of a vector or matrix:</p>
+<div class="codehilite"><pre><span class="n">a</span><span 
class="p">.</span><span class="n">norm</span>
+</pre></div>
+
+
+<p>Transpose:</p>
+<div class="codehilite"><pre><span class="n">val</span> <span 
class="n">Mt</span> <span class="p">=</span> <span class="n">M</span><span 
class="p">.</span><span class="n">t</span>
+</pre></div>
+
+
+<p><em>note: Transposition is currently handled via view, i.e. updating a 
transposed matrix will be updating the original.</em>  Also computing something 
like <code>\(\mathbf{X^\top}\mathbf{X}\)</code>:</p>
+<div class="codehilite"><pre><span class="n">val</span> <span 
class="n">XtX</span> <span class="p">=</span> <span class="n">X</span><span 
class="p">.</span><span class="n">t</span> <span class="c">%*% X</span>
+</pre></div>
+
+
+<p>will not therefore incur any additional data copying.</p>
+<h4 id="decompositions">Decompositions</h4>
+<p>All arguments in the following are matricies.</p>
+<p><strong>Cholesky decomposition</strong></p>
+<div class="codehilite"><pre><span class="n">val</span> <span 
class="n">ch</span> <span class="p">=</span> <span class="n">chol</span><span 
class="p">(</span><span class="n">M</span><span class="p">)</span>
+</pre></div>
+
+
+<p><strong>SVD</strong></p>
+<div class="codehilite"><pre><span class="n">val</span> <span 
class="p">(</span><span class="n">U</span><span class="p">,</span> <span 
class="n">V</span><span class="p">,</span> <span class="n">s</span><span 
class="p">)</span> <span class="p">=</span> <span class="n">svd</span><span 
class="p">(</span><span class="n">M</span><span class="p">)</span>
+</pre></div>
+
+
+<p><strong>EigenDecomposition</strong></p>
+<div class="codehilite"><pre><span class="n">val</span> <span 
class="p">(</span><span class="n">Q</span><span class="p">,</span> <span 
class="n">R</span><span class="p">)</span> <span class="p">=</span> <span 
class="n">eigen</span><span class="p">(</span><span class="n">M</span><span 
class="p">)</span>
+</pre></div>
+
+
+<p><strong>QR decomposition</strong></p>
+<div class="codehilite"><pre><span class="n">val</span> <span 
class="p">(</span><span class="n">Q</span><span class="p">,</span> <span 
class="n">R</span><span class="p">)</span> <span class="p">=</span> <span 
class="n">qr</span><span class="p">(</span><span class="n">M</span><span 
class="p">)</span>
+</pre></div>
+
+
+<p><strong>Rank</strong>: Check for rank deficiency (runs rank-revealing 
QR)</p>
+<div class="codehilite"><pre><span class="n">M</span><span 
class="p">.</span><span class="n">isFullRank</span>
+</pre></div>
+
+
+<p><strong>In-core SSVD</strong></p>
+<div class="codehilite"><pre><span class="n">Val</span> <span 
class="p">(</span><span class="n">U</span><span class="p">,</span> <span 
class="n">V</span><span class="p">,</span> <span class="n">s</span><span 
class="p">)</span> <span class="p">=</span> <span class="n">ssvd</span><span 
class="p">(</span><span class="n">A</span><span class="p">,</span> <span 
class="n">k</span> <span class="p">=</span> 50<span class="p">,</span> <span 
class="n">p</span> <span class="p">=</span> 15<span class="p">,</span> <span 
class="n">q</span> <span class="p">=</span> 1<span class="p">)</span>
+</pre></div>
+
+
+<p><strong>Solving linear equation systems and matrix inversion:</strong> 
fully similar to R semantics; there are three forms of invocation:</p>
+<p>Solve <code>\(\mathbf{AX}=\mathbf{B}\)</code>:</p>
+<div class="codehilite"><pre><span class="n">solve</span><span 
class="p">(</span><span class="n">A</span><span class="p">,</span> <span 
class="n">B</span><span class="p">)</span>
+</pre></div>
+
+
+<p>Solve <code>\(\mathbf{Ax}=\mathbf{b}\)</code>:</p>
+<div class="codehilite"><pre><span class="n">solve</span><span 
class="p">(</span><span class="n">A</span><span class="p">,</span> <span 
class="n">b</span><span class="p">)</span>
+</pre></div>
+
+
+<p>Compute <code>\(\mathbf{A^{-1}}\)</code>:</p>
+<div class="codehilite"><pre><span class="n">solve</span><span 
class="p">(</span><span class="n">A</span><span class="p">)</span>
+</pre></div>
+
+
+<h4 id="misc">Misc</h4>
+<p>Vector cardinality:</p>
+<div class="codehilite"><pre><span class="n">a</span><span 
class="p">.</span><span class="nb">length</span>
+</pre></div>
+
+
+<p>Matrix cardinality:</p>
+<div class="codehilite"><pre><span class="n">m</span><span 
class="p">.</span><span class="n">nrow</span>
+<span class="n">m</span><span class="p">.</span><span class="n">ncol</span>
+</pre></div>
+
+
+<p>Means and sums:</p>
+<div class="codehilite"><pre><span class="n">m</span><span 
class="p">.</span><span class="n">colSums</span>
+<span class="n">m</span><span class="p">.</span><span class="n">colMeans</span>
+<span class="n">m</span><span class="p">.</span><span class="n">rowSums</span>
+<span class="n">m</span><span class="p">.</span><span class="n">rowMeans</span>
+</pre></div>
+
+
+<p>Copy-By-Value:</p>
+<div class="codehilite"><pre><span class="n">val</span> <span 
class="n">b</span> <span class="p">=</span> <span class="n">a</span> <span 
class="n">cloned</span>
+</pre></div>
+
+
+<h4 id="random-matrices">Random Matrices</h4>
+<p><code>\(\mathcal{U}\)</code><em>(0,1) random matrix view</em></p>
+<div class="codehilite"><pre><span class="n">val</span> <span 
class="n">incCoreA</span> <span class="p">=</span> <span 
class="n">Matrices</span><span class="p">.</span><span 
class="n">uniformView</span><span class="p">(</span><span 
class="n">m</span><span class="p">,</span> <span class="n">n</span><span 
class="p">,</span> <span class="n">seed</span><span class="p">)</span>
+</pre></div>
+
+
+<p><code>\(\mathcal{U}\)</code><em>(-1,1) random matrix view</em></p>
+<div class="codehilite"><pre><span class="n">val</span> <span 
class="n">incCoreA</span> <span class="p">=</span> <span 
class="n">Matrices</span><span class="p">.</span><span 
class="n">symmetricUniformView</span><span class="p">(</span><span 
class="n">m</span><span class="p">,</span> <span class="n">n</span><span 
class="p">,</span> <span class="n">seed</span><span class="p">)</span>
+</pre></div>
+
+
+<p><code>\(\mathcal{N}\)</code><em>(-1,1) random matrix view</em></p>
+<div class="codehilite"><pre><span class="n">val</span> <span 
class="n">incCoreA</span> <span class="p">=</span> <span 
class="n">Matrices</span><span class="p">.</span><span 
class="n">gaussianView</span><span class="p">(</span><span 
class="n">m</span><span class="p">,</span> <span class="n">n</span><span 
class="p">,</span> <span class="n">seed</span><span class="p">)</span>
+</pre></div>
+
+
+<h4 id="iterators">Iterators</h4>
+<p>Mahout-Math already exposes a number of iterators.  Scala code just needs 
the following imports to enable implicit conversions to scala iterators.</p>
+<div class="codehilite"><pre><span class="n">import</span> <span 
class="n">collection</span><span class="p">.</span><span class="n">_</span>
+<span class="n">import</span> <span class="n">JavaConversions</span><span 
class="p">.</span><span class="n">_</span>
+</pre></div>
+
+
+<p>Iterating over rows in a Matrix:</p>
+<div class="codehilite"><pre><span class="kr">for</span> <span 
class="p">(</span>row <span class="o">&lt;-</span> m<span class="p">)</span> 
<span class="p">{</span>
+  <span class="m">...</span> do something with row
+<span class="p">}</span>
+</pre></div>
+
+
+<p>Iterating over non-zero and all elements of a vector:
+<em>Note that Vector.Element also has some implicit syntatic sugar, e.g to add 
5.0 to every non-zero element of a matrix, the following code may be 
used:</em></p>
+<div class="codehilite"><pre><span class="kr">for</span> <span 
class="p">(</span>row <span class="o">&lt;-</span> m<span class="p">;</span> el 
<span class="o">&lt;-</span> row.nonZero<span class="p">)</span> el <span 
class="o">=</span> <span class="m">5.0</span> <span class="o">+</span> el
+<span class="m">...</span> or 
+<span class="kr">for</span> <span class="p">(</span>row <span 
class="o">&lt;-</span> m<span class="p">;</span> el <span 
class="o">&lt;-</span> row.nonZero<span class="p">)</span> el :<span 
class="o">=</span> <span class="m">5.0</span> <span class="o">+</span> el
+</pre></div>
+
+
+<p>Similarly <strong>row.all</strong> produces an iterator over all elements 
in a row (Vector).</p>
+<p>For more information including information on Mahout-Samsara's out of core 
Linear algebra bindings see: <a 
href="http://mahout.apache.org/users/sparkbindings/ScalaSparkBindings.pdf";>Mahout
 Scala Bindings and Mahout Spark Bindings for Linear Algebra Subroutines</a></p>
+   </div>
+  </div>     
+</div> 
+  <footer class="footer" align="center">
+    <div class="container">
+      <p>
+        Copyright &copy; 2014 The Apache Software Foundation, Licensed under
+        the <a href="http://www.apache.org/licenses/LICENSE-2.0";>Apache 
License, Version 2.0</a>.
+        <br />
+        Apache and the Apache feather logos are trademarks of The Apache 
Software Foundation.
+      </p>
+    </div>
+  </footer>
+  
+  <script src="/js/jquery-1.9.1.min.js"></script>
+  <script src="/js/bootstrap.min.js"></script>
+  <script>
+    (function() {
+      var cx = '012254517474945470291:vhsfv7eokdc';
+      var gcse = document.createElement('script');
+      gcse.type = 'text/javascript';
+      gcse.async = true;
+      gcse.src = (document.location.protocol == 'https:' ? 'https:' : 'http:') 
+
+          '//www.google.com/cse/cse.js?cx=' + cx;
+      var s = document.getElementsByTagName('script')[0];
+      s.parentNode.insertBefore(gcse, s);
+    })();
+  </script>
+</body>
+</html>


Reply via email to