Advertisement
mfrantz

Untitled

Jan 22nd, 2018
369
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 55.21 KB | None | 0 0
  1.  
  2. <!DOCTYPE html>
  3. <html lang="en" itemscope itemtype="http://schema.org/WebPage">
  4. <head>
  5. <base href="https://activewizards.com/">
  6. <link rel="canonical" href="https://activewizards.com/blog/top-15-scala-libraries-for-data-science/">
  7. <title>Top 15 Scala Libraries for Data Science in 2018 | ActiveWizards: data science and engineering lab</title>
  8. <!-- meta information -->
  9. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  10. <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1, user-scalable=no">
  11.  
  12. <!-- SEO information -->
  13. <meta name="description" content="In our previous articles, we have discussed the &lt;a href=&quot;blog/top-15-libraries-for-data-science-in-python/&quot; target=&quot;_blank&quot;&gt;top Python libraries for data science&lt;/a&gt;. This time we will focus on Scala, which has recently become another prominent language for data scientists.">
  14.  
  15. <meta name="robots" content="index, follow">
  16.  
  17. <!-- favicons -->
  18. <link rel="apple-touch-icon-precomposed" sizes="57x57" href="/assets/components/phpthumbof/cache/favicon.1971c7ff6da9cd856249aeb4a6779980.png">
  19. <link rel="apple-touch-icon-precomposed" sizes="60x60" href="/assets/components/phpthumbof/cache/favicon.37a31a486be8bb02bc5802d2b19853df.png">
  20. <link rel="apple-touch-icon-precomposed" sizes="72x72" href="/assets/components/phpthumbof/cache/favicon.6940ef995afc09b5e8124c4d5d4d1998.png">
  21. <link rel="apple-touch-icon-precomposed" sizes="76x76" href="/assets/components/phpthumbof/cache/favicon.04db01a3ae0b683d74a44c190ef7a705.png">
  22. <link rel="apple-touch-icon-precomposed" sizes="114x114" href="/assets/components/phpthumbof/cache/favicon.4a1ad8b3d97e14530419e678e3b1ba81.png">
  23. <link rel="apple-touch-icon-precomposed" sizes="120x120" href="/assets/components/phpthumbof/cache/favicon.544450cb7ee9ea30c83bc5984d2ecd80.png">
  24. <link rel="apple-touch-icon-precomposed" sizes="144x144" href="/assets/components/phpthumbof/cache/favicon.0797c266f028d8306ee1fbfd05806098.png">
  25. <link rel="apple-touch-icon-precomposed" sizes="152x152" href="/assets/components/phpthumbof/cache/favicon.97f08bbf1d2eb1f422fe01f46182881f.png">
  26. <link rel="shortcut icon" type="image/x-icon" href="/assets/components/phpthumbof/cache/favicon.3ac9f831138494ed31851e449052fc45.png" sizes="16x16">
  27. <link rel="shortcut icon" type="image/x-icon" href="/assets/components/phpthumbof/cache/favicon.055f4bec9fcd6f5638b7ccaf99b0f05a.png" sizes="32x32">
  28. <link rel="shortcut icon" type="image/x-icon" href="/assets/components/phpthumbof/cache/favicon.6dc2cebcd669f4b6793a6076c29f46d8.png" sizes="96x96">
  29. <link rel="shortcut icon" type="image/x-icon" href="/assets/components/phpthumbof/cache/favicon.2d959db72069ac1d51fa2023c7fdf945.png" sizes="128x128">
  30. <link rel="shortcut icon" type="image/x-icon" href="/assets/components/phpthumbof/cache/favicon.f565ac3315eac92eb5453c93384b3069.png" sizes="196x196">
  31. <meta name="msapplication-square70x70logo" content="/assets/components/phpthumbof/cache/favicon.3c9548b4fdd06d2efb9e190d86f71801.png">
  32. <meta name="msapplication-TileImage" content="/assets/components/phpthumbof/cache/favicon.0797c266f028d8306ee1fbfd05806098.png">
  33. <meta name="msapplication-square150x150logo" content="/assets/components/phpthumbof/cache/favicon.58690065b2fed05e549fd0b8051696ec.png">
  34. <meta name="msapplication-wide310x150logo" content="/assets/components/phpthumbof/cache/favicon.84f1b1173d2adb25e2fd7ef19d8f1e7f.png">
  35. <meta name="msapplication-square310x310logo" content="/assets/components/phpthumbof/cache/favicon.7c1ac4003cd9b79f93f7af2719ea3072.png">
  36.  
  37. <!-- Open Graph Protocol metadata -->
  38. <meta property="og:title" content="Top 15 Scala Libraries for Data Science in 2018">
  39. <meta property="og:url" content="https://activewizards.com/blog/top-15-scala-libraries-for-data-science/">
  40. <meta property="og:image" content="https://activewizards.com//assets/components/phpthumbof/cache/awbl-141-scala01.83d1e098911e7666886936d962680f7c.jpg">
  41. <meta property="og:site_name" content="ActiveWizards: data science and engineering lab">
  42. <meta property="og:description" content="In our previous articles, we have discussed the &lt;a href=&quot;blog/top-15-libraries-for-data-science-in-python/&quot; target=&quot;_blank&quot;&gt;top Python libraries for data science&lt;/a&gt;. This time we will focus on Scala, which has recently become another prominent language for data scientists.">
  43.  
  44. <!-- twitter sharing protocol -->
  45. <meta name="twitter:card" content="summary">
  46. <meta name="twitter:url" content="https://activewizards.com/blog/top-15-scala-libraries-for-data-science/">
  47. <meta name="twitter:title" content="Top 15 Scala Libraries for Data Science in 2018">
  48. <meta name="twitter:description" content="In our previous articles, we have discussed the &lt;a href=&quot;blog/top-15-libraries-for-data-science-in-python/&quot; target=&quot;_blank&quot;&gt;top Python libraries for data science&lt;/a&gt;. This time we will focus on Scala, which has recently become another prominent language for data scientists.">
  49. <meta name="twitter:image" content="https://activewizards.com//assets/components/phpthumbof/cache/awbl-141-scala01.83d1e098911e7666886936d962680f7c.jpg">
  50. <meta name="twitter:creator" content="">
  51.  
  52. <!-- google plus schema -->
  53. <link rel="author" href="https://plus.google.com/">
  54. <meta property="og:type" content="article">
  55. <meta itemprop="title" content="Top 15 Scala Libraries for Data Science in 2018">
  56. <meta itemprop="description" content="In our previous articles, we have discussed the &lt;a href=&quot;blog/top-15-libraries-for-data-science-in-python/&quot; target=&quot;_blank&quot;&gt;top Python libraries for data science&lt;/a&gt;. This time we will focus on Scala, which has recently become another prominent language for data scientists.">
  57. <meta itemprop="image" content="https://activewizards.com//assets/components/phpthumbof/cache/awbl-141-scala01.83d1e098911e7666886936d962680f7c.jpg">
  58.  
  59. <!-- windows8 title -->
  60. <meta name="application-name" content="ActiveWizards: data science and engineering lab">
  61. <meta name="msapplication-TileColor" content="#fc0fdc">
  62.  
  63.  
  64.  
  65.  
  66.  
  67. <script>(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)})(window,document,'script','//www.google-analytics.com/analytics.js','ga');ga('create','UA-55501144-1','auto');ga('send','pageview');ga('require','linkid','linkid.js');ga('require','displayfeatures');</script>
  68. <!-- start Mixpanel --><script type="text/javascript">(function(e,b){if(!b.__SV){var a,f,i,g;window.mixpanel=b;b._i=[];b.init=function(a,e,d){function f(b,h){var a=h.split(".");2==a.length&&(b=b[a[0]],h=a[1]);b[h]=function(){b.push([h].concat(Array.prototype.slice.call(arguments,0)))}}var c=b;"undefined"!==typeof d?c=b[d]=[]:d="mixpanel";c.people=c.people||[];c.toString=function(b){var a="mixpanel";"mixpanel"!==d&&(a+="."+d);b||(a+=" (stub)");return a};c.people.toString=function(){return c.toString(1)+".people (stub)"};i="disable time_event track track_pageview track_links track_forms register register_once alias unregister identify name_tag set_config people.set people.set_once people.increment people.append people.union people.track_charge people.clear_charges people.delete_user".split(" ");
  69. for(g=0;g<i.length;g++)f(c,i[g]);b._i.push([a,e,d])};b.__SV=1.2;a=e.createElement("script");a.type="text/javascript";a.async=!0;a.src="undefined"!==typeof MIXPANEL_CUSTOM_LIB_URL?MIXPANEL_CUSTOM_LIB_URL:"file:"===e.location.protocol&&"//cdn.mxpnl.com/libs/mixpanel-2-latest.min.js".match(/^\/\//)?"https://cdn.mxpnl.com/libs/mixpanel-2-latest.min.js":"//cdn.mxpnl.com/libs/mixpanel-2-latest.min.js";f=e.getElementsByTagName("script")[0];f.parentNode.insertBefore(a,f)}})(document,window.mixpanel||[]);
  70. mixpanel.init("ecfc322b8abd266a0a9ee3afdcb4632d");</script><!-- end Mixpanel -->
  71.  
  72.  
  73.  
  74. <!-- Yandex.Metrika counter -->
  75. <script type="text/javascript">
  76. (function (d, w, c) {
  77. (w[c] = w[c] || []).push(function() {
  78. try {
  79. w.yaCounter37628170 = new Ya.Metrika({
  80. id:37628170,
  81. clickmap:true,
  82. trackLinks:true,
  83. accurateTrackBounce:true
  84. });
  85. } catch(e) { }
  86. });
  87.  
  88. var n = d.getElementsByTagName("script")[0],
  89. s = d.createElement("script"),
  90. f = function () { n.parentNode.insertBefore(s, n); };
  91. s.type = "text/javascript";
  92. s.async = true;
  93. s.src = "https://mc.yandex.ru/metrika/watch.js";
  94.  
  95. if (w.opera == "[object Opera]") {
  96. d.addEventListener("DOMContentLoaded", f, false);
  97. } else { f(); }
  98. })(document, window, "yandex_metrika_callbacks");
  99. </script>
  100. <noscript><div><img src="https://mc.yandex.ru/watch/37628170" style="position:absolute; left:-9999px;" alt="yandex" /></div></noscript>
  101. <!-- /Yandex.Metrika counter -->
  102.  
  103.  
  104. <!-- Google Tag Manager -->
  105. <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
  106. new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
  107. j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
  108. 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
  109. })(window,document,'script','dataLayer','GTM-5RJ3225');</script>
  110. <!-- End Google Tag Manager -->
  111. <!-- fix bug upload font-awesome-->
  112. <script type="text/javascript">
  113. (function() { var css = document.createElement('link'); css.href = '//netdna.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css'; css.rel = 'stylesheet'; css.type = 'text/css'; document.getElementsByTagName('head')[0].appendChild(css); })();
  114. </script>
  115. <!-- fix bug upload font-awesome-->
  116. <link rel="stylesheet" href="/assets/components/minifyx/cache/styles_ea20c7e3f4.min.css" type="text/css" />
  117. <link rel="stylesheet" href="/assets/components/quip/css/web.css" type="text/css" />
  118. </head>
  119. <body class="light blog-page" id="to-top">
  120.  
  121. <div id="top-15-scala-libraries-for-data-science">
  122. <style>
  123. .action .action-block .text h3,.action .action-block .text p,.site-navbar .navbar-nav .active a,.btn,.read-more,.section.section-pricing .panel-primary h1,
  124. a.btn.btn-filter{border: 1px solid #506fa3;}
  125. .line-element .action .action-block{border: 2px solid #506fa3}
  126. .line-element .action,.icon-wrap i{color: #506fa3}
  127. .line-element .action .action-block .text{background-color: #506fa3}
  128. .section-faq .panel-default>.panel-heading>a:hover,.section-faq .panel-default>.panel-heading>a:hover span.indicator i.fa{color:rgba(80,111,163,0.8)}
  129. .hover-gallery{background-color:rgba(80,111,163,0.6)}
  130. .icon-with-text h3,.text-r a,table.project-info td:nth-child(3) a, table.project-info td:nth-child(4) a,table.project-info2 td:nth-child(2),table.project-info a{color:#506fa3}
  131. .default-carousel.owl-theme .owl-controls .owl-buttons div{color: #506fa3;text-shadow: 1px 2px rgba(80,111,163,0.6)}
  132. .btn-transparent {border: 3px solid #506fa3 !important;}
  133. nav#navbar li.last a,.bd-main{border:3px solid #506fa3 !important;}
  134. nav#navbar li.last.active a,.caption-body a.fa,.icon-with-text a.btn,.btn-filter:hover,.btn-filter.active-filter,.open-gal a{background: #506fa3;}
  135. .site-navbar .navbar-brand i, .site-navbar .navbar-brand a:hover, .site-navbar .navbar-brand a:active {color:" + e + "; }
  136. .site-navbar .navbar-nav .active a, .site-navbar .navbar-nav a:active, .section.section-testimonial .carousel-indicators li.active, .mk-edge-next:hover, .mk-edge-prev:hover, .owl-theme .owl-controls .owl-page span, .read-more {background:#506fa3}
  137. .btn-danger, .btn-default, .open .dropdown-toggle.btn-danger, .owl-theme .owl-controls .owl-page span {background-color:#506fa3}
  138. .btn-danger:hover, .btn-danger:focus, .btn-danger:active, .btn-default:hover, .btn-default:focus, .btn-default:active, .read-more:hover, .blog-tags a:hover, .cloud-tags a:hover {background-color:#506fa3}
  139. .hover-effect:hover .overlay {background:#506fa3}
  140. .panel-primary, .headline h2, .headline h3, .headline h4, .section.section-testimonial .carousel-indicators li.active:before {border-color:#506fa3}
  141. .panel-primary>.panel-heading {background-color:#506fa3; border-color:#506fa3})
  142. main#main a{color:#533e41}
  143. main#main a.btn,main#main a.read-more{color:#FFF}
  144. main#main a.btn-transparent{color: #555 !important}
  145. main#main a.btn-transparent:hover{color:#FFF !important}
  146. a.btn-danger.typeform-share.link{border: 3px solid #506fa3 !important;padding: 9px 9px;}
  147. div#cookiescript_accept, main#main a.btn-transparent:hover{background-color:#506fa3 !important}
  148. div#cookiescript_readmore{border-color:#506fa3 !important}
  149. ul#navigation li.last a:hover,.nav>li>a:hover, .nav>li>a:focus{background-color:#506fa3 !important; opacity:0.8; color:#FFF}
  150. .blog-post-wrapper a, .blog-post p a,a.raw-link,.paging li span,.paging li:hover a,.comment-reply-link,.portfolio-link{color:#506fa3}.paging li.control:hover{border-color:#506fa3 !important}
  151. .r-count{color:#506fa3}
  152. .btn-transparent.bd-main:hover{opacity:1;background-color:#506fa3 !important}
  153. .bg-main,.btn-transparent.bd-main:active,.btn-transparent.bd-main:focus{background-color: #506fa3 !important;{border-color: #506fa3 !important}
  154. </style>
  155. <style>
  156. body, .site-navbar .navbar-brand a {
  157. font-family: 'Lato', "Helvetica Neue", Helvetica, Arial, sans-serif;
  158. }
  159. h1, h2, h3, h4, h5, h6, .h1, .h2, .h3, .h4, .h5, .h6, .hover-effect .fa span {
  160. font-family: 'Lato',Verdana, Georgia, "Times New Roman", Times, serif;
  161. }
  162. body.lato,.kreon .site-navbar .navbar-brand a{font-family:'Lato',"Helvetica Neue",Helvetica,Arial,sans-serif!important}
  163. .lato h1,.lato h2,.lato h3,.lato h4,.lato h5,.lato h6,.lato .h1,.lato .h2,.lato .h3,.lato .h4,.lato .h5,.lato .h6,.lato .hover-effect .fa span{font-family:Verdana,Georgia,"Times New Roman",Times,serif!important}
  164. </style>
  165. <header id="header" class="site-header">
  166. <nav id="topbar" class="site-topbar visible-lg visible-md">
  167. <div class="container">
  168. <div class="rowtop">
  169. <div class="pull left slogan">
  170. <span>Data Science and Machine Learning company</span>
  171. </div>
  172. <div>For friendly data science advice please drop us a line: &nbsp;<a href="&#109;&#x61;&#105;&#108;&#x74;&#111;&#x3a;&#104;&#101;&#x6c;&#108;&#x6f;&#64;&#97;&#99;&#116;&#105;&#118;&#101;&#119;&#105;&#x7a;&#97;r&#100;&#x73;&#x2e;&#99;&#x6f;&#109;">&#x68;&#x65;&#x6c;&#x6c;&#x6f;&#x40;&#x61;&#99;t&#x69;&#118;&#101;&#x77;&#105;&#x7a;a&#x72;&#100;&#115;&#46;&#x63;&#x6f;&#x6d;</a>
  173. </div>
  174. <div class="social-links">
  175. <!--noindex-->
  176. <a href="https://www.facebook.com/activewizards/" title="facebook" target="_blank" rel="noopener noreferrer nofollow"><i class="fa fa-facebook"></i></a>
  177. <a href="https://twitter.com/activewizards" title="twitter" target="_blank" rel="noopener noreferrer nofollow"><i class="fa fa-twitter"></i></a>
  178. <a href="https://www.linkedin.com/company/4790078" title="linkedin" target="_blank" rel="noopener noreferrer nofollow"><i class="fa fa-linkedin"></i></a>
  179.  
  180. <a href="https://github.com/activewizardslab" title="github" target="_blank" rel="noopener noreferrer nofollow"><i class="fa fa-github"></i></a>
  181.  
  182. <a href="http://www.slideshare.net/activewizards" title="slideshare" target="_blank" rel="noopener noreferrer nofollow"><i class="fa fa-slideshare"></i></a>
  183. <a href="https://medium.com/activewizards-machine-learning-company" title="medium" target="_blank" rel="noopener noreferrer nofollow"><i class="fa fa-medium"></i></a>
  184.  
  185. <!--/noindex-->
  186. </div>
  187. </div>
  188. </div>
  189. </nav>
  190. <nav id="navbar" class="site-navbar navbar navbar-static-top ">
  191. <div class="container">
  192. <div class="navbar-header">
  193. <div class="mobile-nav-icon"></div>
  194. <h2 class="header-logo"><a href="https://activewizards.com/" title="ActiveWizards: data science and engineering lab">
  195. <img src="content/logo/aw-logo-site.svg" alt="ActiveWizards: data science and engineering lab" width="220" height="40" />
  196. </a>
  197.  
  198. </h2>
  199. </div>
  200.  
  201. <div class="collapse navbar-collapse">
  202. <ul class="nav navbar-nav navbar-right"><li class="first"><a href="/#index" >Home</a></li><li><a href="/#services" >Services</a></li><li><a href="/#our-clients" >Clients</a></li><li><a href="/#how-it-works" >Technology</a></li><li class="active"><a href="/#blog" external=on>Our Blog</a></li><li class="last"><a href="/#contact-us" >Contact Us</a></li></ul>
  203. </div>
  204. </div>
  205. </nav>
  206. </header>
  207. <main id="main" class="site-main">
  208. <section class="section">
  209. <div class="container">
  210. <div class="to-blog">
  211. <a href="blog/"><i class="fa fa-angle-left" aria-hidden="true"></i> Back to Our Blog</a>
  212. <div class="addthis_sharing_toolbox"></div>
  213. <script type="text/javascript" src="//s7.addthis.com/js/300/addthis_widget.js#pubid=ra-5695d3e9654422b1" async="async"></script>
  214. <script type="text/javascript">
  215. var addthis_share = {
  216. url: "https://activewizards.com/blog/top-15-scala-libraries-for-data-science/",
  217. title: "Top 15 Scala Libraries for Data Science in 2018",
  218. media: "https://activewizards.com/content/blog/Top_15_scala_libs_2018/awbl-141-scala01.jpg"
  219. }
  220. </script>
  221. <div class="clearfix"></div>
  222. </div>
  223.  
  224. <div class="row">
  225. <div class="blog-post-wrapper">
  226. <h1>Top 15 Scala Libraries for Data Science in 2018</h1>
  227. <div class="tag-post">
  228.  
  229. <i class="fa fa-tags"></i> <div class="blog-tags"> <a href="blog/tag-search.html?tag=data+science&amp;key=" class="tl-tag">data science</a>, <a href="blog/tag-search.html?tag=machine+learning&amp;key=" class="tl-tag">machine learning</a>, <a href="blog/tag-search.html?tag=scala&amp;key=" class="tl-tag">scala</a></div>
  230. </div>
  231.  
  232. <div class="blog-img">
  233. <img class="img-responsive" src="/assets/components/phpthumbof/cache/awbl-141-scala01.ea3787abffbd75e006122c7b4ebbf674.jpg" alt="Top 15 Scala Libraries for Data Science in 2018">
  234. </div>
  235. <p class="justifyfull" dir="ltr">In our previous articles, we have discussed the <a href="blog/top-15-libraries-for-data-science-in-python/" target="_blank">top Python libraries for data science</a>. This time we will focus on Scala, which has recently become another prominent language for data scientists. It has gained popularity mostly due to the rise of Spark, a big data processing engine of choice, which is written in Scala and thus provides native API in Scala.</p>
  236. <p class="justifyfull" dir="ltr"><span>We will not go into an in-depth comparison of Scala vs. Python here, but it’s important to note, that, unlike Python, Scala is a compiled language. Hence the code written in it gets executed much faster (comparing to pure Python, and not specialized libraries like NumPy).</span></p>
  237. <p class="justifyfull" dir="ltr"><span>In contrast to Java, writing in Scala is much more enjoyable, since the same logic can usually be expressed with the significantly smaller number of lines. Scala’s functionality is in no way inferior to that of Java and even has some properties that are more advanced. Java-old-timers could provide a lot of counter-arguments here, but there is no doubt that Scala is much better suited for data science tasks.</span></p>
  238. <p class="justifyfull" dir="ltr"><span>Currently, Python and R remain the leading languages for rapid data analysis, as well as building, exploring, and manipulating powerful models, while Scala is becoming the key language in the development of functional products that work with big data, as the latter need stability, flexibility, high speed, scalability, etc. Often, in a research phase, analysis and models are done in Python and then implemented in Scala during production.</span></p>
  239. <p class="justifyfull" dir="ltr"><span>For your convenience, we have prepared a comprehensive overview of the most important libraries used to perform machine learning and Data Science tasks in Scala. We will use analogies with the corresponding Python tools for better understanding of some important aspects. In fact, there is just one top-level comprehensive tool that forms the basis for the development of data science and big data solutions in Scala, known as Apache Spark, that is supplemented by a wide range of libraries and instruments written in both Scala and Java. Let's take a closer look at it.</span></p>
  240. <h2 class="header justifyfull" dir="ltr"><strong>Data analysis and math</strong></h2>
  241. <h3><strong>Breeze (Commits: 3316, Contributors: 84)</strong></h3>
  242. <p class="justifyfull" dir="ltr"><span>Breeze is known as the primary scientific computing library for Scala. It scoops up ideas from MATLAB's data structures and the NumPy classes for Python. Breeze provides fast and efficient manipulations with data arrays, and enables the implementation of many other operations, including the following:</span></p>
  243. <ul class="justifyfull">
  244. <li dir="ltr">
  245. <p dir="ltr"><span><strong style="font-size: 18px;">Matrix and vector operations</strong> for creating, transposing, filling with numbers, conducting element-wise operations, inversion, calculating determinants, and much more other options to meet almost every need.</span></p>
  246. </li>
  247. <li dir="ltr">
  248. <p dir="ltr"><span style="word-break: break-all;"><strong style="font-size: 18px;">Probability and statistic functions,</strong> that vary from statistical distributions and calculating descriptive statistics (such as mean, variance and standard deviation) to Markov chain models. The primary packages for statistics are </span><code dir="ltr">breeze.stats</code> and <code dir="ltr">breeze.stats.distributions</code></p>
  249. </li>
  250. <li dir="ltr">
  251. <p dir="ltr"><span><strong style="font-size: 18px;">Optimization,</strong> which implies investigation of the function for a local or global minimum. Optimization methods are stored in the </span><code dir="ltr">breeze.optimize package. </code></p>
  252. </li>
  253. <li dir="ltr">
  254. <p dir="ltr"><span><strong style="font-size: 18px;">Linear algebra:</strong> all basic operations rely on the netlib-java library, making Breeze extremely fast for algebraic computations.</span></p>
  255. </li>
  256. <li dir="ltr">
  257. <p dir="ltr"><span><strong style="font-size: 18px;">Signal processing operations,</strong> necessary for work with digital signals. The examples of important operations in Breeze are convolution and Fourier transformation, which decomposes the given function into a sum of sine and cosine components.</span></p>
  258. </li>
  259. </ul>
  260. <p class="justifyfull" dir="ltr"><span>Breeze also provides plotting possibilities which we will discuss below.</span></p>
  261. <h3><strong>Saddle (Commits: 184, Contributors: 10)</strong></h3>
  262. <p class="justifyfull" dir="ltr"><span>Another data manipulation toolkit for Scala is Saddle. It is a Scala analog of R and Python's pandas library. Like the dataframes in pandas or R, Saddle is based on the Frame structure (2D indexed matrix).</span></p>
  263. <p class="justifyleft" style="list-style-type: none;" dir="ltr"><span>In total, there are five major data structures, namely: </span></p>
  264. <ul class="justifyfull" style="text-align: center; list-style-type: none;">
  265. <li style="text-align: center; list-style-type: none;" dir="ltr">
  266. <p style="text-align: center; list-style-type: none;" dir="ltr"><span style="list-style-type: none;">Vec (1D vector)</span></p>
  267. <p style="text-align: center; list-style-type: none;" dir="ltr"><span><img src="content/blog/Top_15_scala_libs_2018/vec.jpg" alt="" width="67" height="103" /></span></p>
  268. </li>
  269. <li style="text-align: center; list-style-type: none;" dir="ltr">
  270. <p style="text-align: center; list-style-type: none;" dir="ltr"><span>Mat (2D matrix)</span></p>
  271. <p style="text-align: center; list-style-type: none;" dir="ltr"><span><img src="content/blog/Top_15_scala_libs_2018/mat.png" alt="" width="209" height="68" /></span></p>
  272. </li>
  273. <li style="text-align: center; list-style-type: none;" dir="ltr">
  274. <p style="text-align: center; list-style-type: none;" dir="ltr"><span>Series (1D indexed matrix)</span></p>
  275. <p style="text-align: center; list-style-type: none;" dir="ltr"><span><img src="content/blog/Top_15_scala_libs_2018/series.jpg" alt="" width="110" height="103" /></span></p>
  276. </li>
  277. <li style="text-align: center; list-style-type: none;" dir="ltr">
  278. <p style="text-align: center; list-style-type: none;" dir="ltr"><span>Frame (2D indexed matrix)</span></p>
  279. <p style="text-align: center; list-style-type: none;" dir="ltr"><span><img src="content/blog/Top_15_scala_libs_2018/frame.jpg" alt="" width="258" height="103" /></span></p>
  280. </li>
  281. <li style="text-align: center; list-style-type: none;" dir="ltr">
  282. <p style="text-align: center; list-style-type: none;" dir="ltr"><span>Index (hashmap-like)</span></p>
  283. <p style="text-align: center; list-style-type: none;" dir="ltr"><span><img style="display: block; margin-left: auto; margin-right: auto;" src="content/blog/Top_15_scala_libs_2018/index.jpg" alt="" width="124" height="69" /></span></p>
  284. </li>
  285. </ul>
  286. <p class="justifyfull" dir="ltr"><span>The Vec and Mat classes are at the base of Series and Frame. You can implement different manipulations on these data structures, and use them for basic data analysis. Another great thing about Saddle is its robustness to missing values. /span&gt;</span></p>
  287. <h3><strong>Scalalab (Commits: 23, Contributors: 1)</strong></h3>
  288. <p class="justifyfull" dir="ltr"><span>ScalaLab is a Scala’s interpretation of MATLAB computing functionality. Moreover, ScalaLab can directly call and access the results of MATLAB scripts.</span></p>
  289. <p class="justifyfull" dir="ltr"><span>The main difference from the previous computation libraries is that ScalaLab uses its own domain-specific language called ScalaSci. Conveniently, Scalalab gets access to the variety of scientific Java and Scala libraries, so you can easily import your data and then use different methods to make manipulations and computations. Most of the techniques are similar to Breeze and Saddle. In addition, as in Breeze, there are plotting opportunities which allow further interpretation of the resulting data.</span></p>
  290. <h2 class="header justifyfull" dir="ltr"><strong>NLP</strong></h2>
  291. <h3><strong>Epic (Commits: 1790, Contributors: 15) &amp; Puck (Commits: 536, Contributors: 1)</strong></h3>
  292. <p class="justifyfull" dir="ltr"><span>Scala has some great natural language processing libraries as a part of ScalaNLP, including Epic and Puck. These libraries are mostly used as text parsers, with Puck being more convenient if you need to parse thousands of sentences due to its high-speed and GPU usage. Also, Epic is known as a prediction framework which employs structured prediction for building complex systems.</span></p>
  293. <h2 class="header justifyfull" dir="ltr"><strong>Visualization</strong></h2>
  294. <h3><strong>Breeze-vis (Commits: 29, Contributors: 3)</strong></h3>
  295. <p class="justifyfull" dir="ltr"><span>As the name suggests, Breeze-viz is the plotting library developed by Breeze for Scala. It is based on the prominent Java charting library JFreeChart and has a MATLAB-like syntax. Although Breeze-viz has much fewer opportunities than MATLAB, matplotlib in Python, or R, it is still very helpful in the process of developing and establishing new models. </span></p>
  296. <p class="justifyfull" dir="ltr"><span><img style="display: block; margin-left: auto; margin-right: auto;" src="content/blog/Top_15_scala_libs_2018/breeze-vis-(1).jpg" alt="" width="998" height="376" /></span></p>
  297. <h4><strong>Vegas (Commits: 210, Contributors: 14)</strong></h4>
  298. <p class="justifyfull" dir="ltr"><span>Another Scala lib for data visualization is Vegas. It is much more functional than Breeze-viz and allows to make some plotting specifications such as filtering, transformations, and aggregations. It is similar in structure to Python’s Bokeh and Plotly.</span></p>
  299. <p class="justifyfull" dir="ltr"><span>Vegas provides declarative visualization that allows you to focus mainly on specifying what needs to be done with the data and conducting further analysis of the visualizations, without having to worry about the code implementation.</span></p>
  300. <p class="justifyfull" dir="ltr"><span><img style="display: block; margin-left: auto; margin-right: auto;" src="content/blog/Top_15_scala_libs_2018/vegas-(1).jpg" alt="" width="537" height="428" /></span></p>
  301. <h2 class="header justifyfull" dir="ltr"><strong>Machine Learning</strong></h2>
  302. <h3><strong>Smile (Commits: 1019, Contributors: 21)</strong></h3>
  303. <p class="justifyfull" dir="ltr"><span>Statistical Machine Intelligence and Learning Engine, or shortly Smile, is a promising modern machine learning system in some ways similar to Python’s scikit-learn. It is developed in Java and offers an API for Scala too. The library will amaze you with fast and extensive applications, efficient memory usage and a large set of machine learning algorithms for Classification, Regression, Nearest Neighbor Search, Feature Selection, etc.</span></p>
  304. <p class="justifyfull" dir="ltr"><span><img style="display: block; margin-left: auto; margin-right: auto;" src="content/blog/Top_15_scala_libs_2018/smile.jpg" alt="" width="615" height="537" /></span></p>
  305. <p class="justifyfull" dir="ltr"> </p>
  306. <p class="justifyfull" dir="ltr"><img style="display: block; margin-left: auto; margin-right: auto;" src="content/blog/Top_15_scala_libs_2018/smile2.jpg" alt="" width="657" height="561" /></p>
  307. <h3><strong>Apache Spark MLlib &amp; ML </strong></h3>
  308. <p class="justifyfull" dir="ltr"><span>Built on top of Spark, MLlib library provides a vast variety of machine learning algorithms. Being written in Scala, it also provides highly functional API for Java, Python, and R, but opportunities for Scala are more flexible. The library consists of two separate packages: MLlib and ML. Let’s look at them in more detail one by one.</span></p>
  309. <ul class="justifyfull">
  310. <li dir="ltr">
  311. <p dir="ltr"><span>MLlib is an RDD-based library that contains core machine learning algorithms for classification, clustering, unsupervised learning techniques supported by tools for implementing basic statistics such as correlations, hypothesis testing, and random data generation.</span></p>
  312. </li>
  313. <li dir="ltr">
  314. <p dir="ltr"><span>ML is a newer library which, unlike MLlib, operates on data frames and datasets. The main purpose of the library is to give the ability to construct pipelines of different transformations on your data. The pipeline can be considered as a sequence of stages, where each stage is either a Transformer, that transforms one data frame into another data frame or an Estimator, an algorithm that can fit on a data frame to produce a Transformer.</span></p>
  315. </li>
  316. </ul>
  317. <p class="justifyfull" dir="ltr"><span>Each package has its pros and cons and, in practice, it often proves more effective to apply both.</span></p>
  318. <h3><strong>DeepLearning.scala (Commits: 1647, Contributors: 14)</strong></h3>
  319. <p class="justifyfull" dir="ltr"><span>DeepLearning.scala is an alternative machine learning toolkit that provides efficient solutions for deep learning. It utilizes mathematical formulas to create complex dynamic neural networks through a combination of object-oriented and functional programming. The library uses a wide range of types, as well as applicative type classes. The latter allows commencing multiple calculations simultaneously, which we consider crucial to have in a data scientist’s disposal. It’s worth mentioning that the library’s neural networks are programs and support all of Scala features.</span></p>
  320. <h3><strong>Summing Bird (Commits: 1772, Contributors: 31) </strong></h3>
  321. <p class="justifyfull" dir="ltr"><span>Summingbird is a domain-specific data processing framework which allows integration of batch and online MapReduce computations as well as the hybrid batch/online processing mode. The main catalyzer for designing the language came from Twitter developers who were often dealing with writing the same code twice: first for batch processing, then once more for online processing.</span></p>
  322. <p class="justifyfull" dir="ltr"><span>Summingbird consumes and generates two types of data: streams (infinite sequences of tuples), and snapshots regarded as the complete state of a dataset at some point in time. Finally, Summingbird provides platform implementations for Storm, Scalding, and an in-memory execution engine for testing purposes.</span></p>
  323. <h3><strong>PredictionIO (Commits: 4343, Contributors: 125)</strong></h3>
  324. <p class="justifyfull" dir="ltr"><span>Of course, we can not ignore a machine learning server for constructing and deploying predictive engines called PredictionIO. It is built on Apache Spark, MLlib, and HBase and was even ranked on Github as the most popular Apache Spark-based machine learning product. It enables you to easily and efficiently build, evaluate and deploy engines, implement your own machine learning models, and incorporate them into your engine.</span></p>
  325. <h2 class="header justifyfull" dir="ltr"><strong>Additional</strong></h2>
  326. <h3><strong>Akka (Commits: 21430, Contributors: 467)</strong></h3>
  327. <p class="justifyfull" dir="ltr"><span>Developed by the Scala’s creator company, Akka is a concurrent framework for building distributed applications on a JVM. It uses an actor-based model, where an actor represents an object that receives messages and takes appropriate actions. Akka replaces the functionality of the Actor class that was available in the previous Scala versions.</span></p>
  328. <p class="justifyfull" dir="ltr"><span>The main difference, also considered as the most significant improvement, is the additional layer between the actors and the underlying system which only requires the actors to process messages, while the framework handles all other complications. All actors are hierarchically arranged, thus creating an Actor System which helps actors to interact with each other more efficiently and solve complex problems by dividing them into smaller tasks.</span></p>
  329. <h3><strong>Spray (Commits: 2663, Contributors: 74)</strong></h3>
  330. <p class="justifyfull" dir="ltr"><span>Now let’s take a look at Spray - a suite of Scala libraries for constructing REST/HTTP web services built on top of Akka. It assures asynchronous, non-blocking actor-based high-performance request processing, while the internal Scala DSL provides a defining web service behavior, as well as efficient and convenient testing capabilities.</span></p>
  331. <h3><strong>Slick (Commits: 1940, Contributors: 92)</strong></h3>
  332. <p class="justifyfull" dir="ltr"><span>Last but not least on our list is Slick, which stands for Scala Language-Integrated Connection Kit. It is a library for creating and executing database queries that offer a variety of supported databases such as H2, MySQL, PostgreSQL, etc. Some databases are available via slick-extensions.</span></p>
  333. <p class="justifyfull" dir="ltr"><span>To build queries, Slick provides a powerful DSL, which makes the code look as if you were using the Scala collections. Slick supports both simple SQL queries, and strongly-typed joins of several tables. Moreover, simple subqueries can be used to construct more complex ones.</span></p>
  334. <h2 class="header justifyfull" dir="ltr"><strong>Conclusion</strong></h2>
  335. <p class="justifyfull" dir="ltr"><span>In this article, we have outlined some of the Scala libraries that can be very useful while performing major data scientific tasks. They have proved to be highly helpful and effective for achieving the best results. You can also view the activity statistics taken from GitHub on every provided library below.</span></p>
  336. <p class="justifyfull" dir="ltr"><span><img style="display: block; margin-left: auto; margin-right: auto;" src="content/blog/Top_15_scala_libs_2018/conclusion.jpg" alt="" width="948" height="322" /></span></p>
  337. <p class="justifyfull" dir="ltr">Source: <a href="https://docs.google.com/spreadsheets/d/1wLOtLLJ65QMbLumc3F2Mop_4uPIFbyJ6iDZwOp0cXrQ" target="_blank">Google Spreadsheet</a></p>
  338. <p class="justifyfull" dir="ltr"><span>Please note, that the list mentioned above is not comprehensive, and a lot of other tools suitable for different use cases are available on the market. If you have some positive experience with any other useful Scala libraries or frameworks that are worth adding to this list, please feel free to share them in the comment section below.</span></p>
  339. <p class="justifyfull" dir="ltr"><span>Thank you very much for your attention and cooperation!</span></p>
  340. <div class="subscribe-post">
  341. <div class="input-group mailchimp-wrapper">
  342. <form action="blog/top-15-scala-libraries-for-data-science/#subscribe-post" method="post" id="subscribe-post">
  343. <input type="email" name="EMAIL" class="form-control" placeholder="Your Email Address" value="">
  344. <span class="input-group-btn">
  345. <input type="submit" class="btn btn-danger" name="mmc_subscribe" value="Subscribe to Email Updates" onclick="mixpanel.track('Subscribe (Post bottom)');ga('send', 'event', 'Subscribe', 'click', 'Subscribe (Post bottom)');">
  346. </span>
  347. </form>
  348. </div>
  349. <script>
  350.  
  351.  
  352. </script>
  353. </div>
  354.  
  355. <div class="blog-post-tags">
  356. <ul class="list-unstyled list-inline blog-info">
  357.  
  358. <li><i class="fa fa-tags"></i>
  359. <div class="blog-tags">
  360. <a href="blog/tag-search.html?tag=data+science&amp;key=" class="tl-tag">data science</a>, <a href="blog/tag-search.html?tag=machine+learning&amp;key=" class="tl-tag">machine learning</a>, <a href="blog/tag-search.html?tag=scala&amp;key=" class="tl-tag">scala</a>
  361. </div>
  362. </li>
  363. </ul>
  364. </div>
  365. </div>
  366. </div>
  367. <div class="to-blog">
  368. <a href="blog/"><i class="fa fa-angle-left" aria-hidden="true"></i> Back to Our Blog</a>
  369. <div class="addthis_sharing_toolbox"></div>
  370. <script type="text/javascript" src="//s7.addthis.com/js/300/addthis_widget.js#pubid=ra-5695d3e9654422b1" async="async"></script>
  371. <script type="text/javascript">
  372. var addthis_share = {
  373. url: "https://activewizards.com/blog/top-15-scala-libraries-for-data-science/",
  374. title: "Top 15 Scala Libraries for Data Science in 2018",
  375. media: "https://activewizards.com/content/blog/Top_15_scala_libs_2018/awbl-141-scala01.jpg"
  376. }
  377. </script>
  378. <div class="clearfix"></div>
  379. </div>
  380.  
  381. <div class="related-posts">
  382. <h3>Related posts</h3>
  383. <div class="row">
  384. <div class="col-md-4 col-xs-12 alignleft related-post-item">
  385. <div class="blog-img">
  386. <a href="blog/top-15-libraries-for-data-science-in-python/"><img src="/assets/components/phpthumbof/cache/a-library-cataloging-system.5ce0b957ec57a7239565cab505471966.jpg" alt="Top 15 Python Libraries for Data Science in 2017" width="360" height="166"></a>
  387. </div>
  388. <h2><a href="blog/top-15-libraries-for-data-science-in-python/">Top 15 Python Libraries for Data Science in 2017</a></h2>
  389. <div>
  390. As Python has gained a lot of traction in the recent years in Data Science industry, we wanted to outline some of its most useful libraries for data scientists and engineers, based on our experience.</div>
  391. <a class="raw-link left" href="blog/top-15-libraries-for-data-science-in-python/">Read more <i class="fa fa-long-arrow-right" aria-hidden="true"></i></a>
  392. <div class="clearfix"></div>
  393. </div>
  394. <div class="col-md-4 col-xs-12 alignleft related-post-item">
  395. <div class="blog-img">
  396. <a href="blog/6-top-big-data-and-data-science-trends-2017/"><img src="/assets/components/phpthumbof/cache/560-292.f7eaec65a4eca0f7ab325f59106ee09f.jpg" alt="6 Top Big Data and Data Science Trends 2017" width="360" height="166"></a>
  397. </div>
  398. <h2><a href="blog/6-top-big-data-and-data-science-trends-2017/">6 Top Big Data and Data Science Trends 2017</a></h2>
  399. <div>
  400. Recently we stepped in the 2017 year, and it’s time to draw the conclusion about 2016. Our world is depending more and more on the data and information, businesses using data science and machine learning to handle an enormous amount of data. Such things as deep learning and artificial intelligence applications really took off, and we expect those and other important developments to continue. So, let’s have a look at top big data and data science trends for the year 2017.</div>
  401. <a class="raw-link left" href="blog/6-top-big-data-and-data-science-trends-2017/">Read more <i class="fa fa-long-arrow-right" aria-hidden="true"></i></a>
  402. <div class="clearfix"></div>
  403. </div>
  404. <div class="col-md-4 col-xs-12 alignleft related-post-item">
  405. <div class="blog-img">
  406. <a href="blog/nlp-and-data-visualization-challenge/"><img src="/assets/components/phpthumbof/cache/nlp-and-data-visualization-challenge-1.0d3f6d063a1c829ba25e37fb700004dc.png" alt="NLP and data visualization for UNDP" width="360" height="166"></a>
  407. </div>
  408. <h2><a href="blog/nlp-and-data-visualization-challenge/">NLP and data visualization for UNDP</a></h2>
  409. <div>
  410. We built an automated tool that extracts from a set of UN publications all the messages that relate to the relationships between urban development (SDG 11), and all the other SDG areas, and then visualize the results.</div>
  411. <a class="raw-link left" href="blog/nlp-and-data-visualization-challenge/">Read more <i class="fa fa-long-arrow-right" aria-hidden="true"></i></a>
  412. <div class="clearfix"></div>
  413. </div>
  414. </div>
  415. </div>
  416.  
  417. <div class="post-comments" id="comments">
  418. <a class="comments-opener" href="#"> <h3>Comments (0) <i class="fa fa-angle-down" aria-hidden="true"></i><i class="fa fa-angle-up" aria-hidden="true"></i></h3></a>
  419. <div class="post-comments-wrap">
  420.  
  421.  
  422. <a href="javascript:close_reply()"><i class="fa fa-times close-com"></i></a>
  423. <h3>Add a new comment:</h3>
  424. <p class="quip-success" id="quip-success-qcom"></p>
  425. <script>
  426.  
  427. </script>
  428. <form id="quip-add-comment-qcom" action="blog/top-15-scala-libraries-for-data-science/#comments" method="post">
  429.  
  430. <input type="hidden" name="nospam" value="">
  431. <input type="hidden" name="thread" value="article-b30-422">
  432. <input type="hidden" name="parent" value="0">
  433. <input type="hidden" name="auth_nonce" value="">
  434. <input type="hidden" name="preview_mode" value="">
  435.  
  436.  
  437.  
  438. <div class="form-group col-md-12 col-lg-12">
  439. <label for="quip-comment-email-qcom">Comment</label>
  440. <textarea class="form-control" style="resize: vertical;" name="comment" id="comment" id="quip-comment-box-qcom" rows="5" placeholder="What do you have to say?"></textarea>
  441. </div>
  442. <div class="form-group col-md-12 col-lg-12">
  443. <label for="quip-comment-name-qcom">Name<span class="quip-error"></span></label>
  444. <input class="form-control" type="text" name="name" id="quip-comment-name-qcom" value="" placeholder="What’s your name?">
  445. </div>
  446.  
  447. <div class="form-group col-md-12 col-lg-12">
  448. <label for="quip-comment-email-qcom">E-mail <span class="quip-error"></span></label>
  449. <input type="email" class="form-control" name="email" id="quip-comment-email-qcom" value="" placeholder="What’s your email address?">
  450. </div>
  451.  
  452. <div class="form-group col-md-12">
  453.  
  454. <input type="submit" class="btn btn-danger" name="quip-post" value="Submit">
  455.  
  456. </div>
  457. </form>
  458. <div id="popup_bg">
  459. <div id="popup_window">
  460. </div>
  461. </div>
  462. </div>
  463. </div>
  464. </div><section class="section section-center section-benefits section-blog-services">
  465. <div class="container">
  466. <h2 class="section-title">
  467. <span>Related services</span>
  468. </h2>
  469. <div class="row">
  470. <div class="col-md-4 col-sm-6">
  471.  
  472. <div class="icon-wrap">
  473. <a href="big-data-engineers"><img src="/assets/components/phpthumbof/cache/Database-Add.7dc941955446e01dded27c43623eeafa.png" alt="Data Engineering" title="Data Engineering" height="120" width="120"></a>
  474. </div>
  475. <a href="big-data-engineers"><h4>Data Engineering</h4></a>
  476. <p>Big data engineering services, data cleaning, transformation, storage. API design and development</p>
  477.  
  478. </div>
  479. <div class="col-md-4 col-sm-6">
  480.  
  481. <div class="icon-wrap">
  482. <a href="data-science-consultants"><img src="/assets/components/phpthumbof/cache/Computer-Graph.b11356ab7b20360603b88b856fdce325.png" alt="Data Science Applications" title="Data Science Applications" height="120" width="120"></a>
  483. </div>
  484. <a href="data-science-consultants"><h4>Data Science Applications</h4></a>
  485. <p>Building end-to-end data pipelines, machine learning application, AI consulting</p>
  486.  
  487. </div>
  488. <div class="col-md-4 col-sm-6">
  489.  
  490. <div class="icon-wrap">
  491. <a href="machine-learning-engineers"><img src="/assets/components/phpthumbof/cache/Windows-Search-Coding.7dc941955446e01dded27c43623eeafa.png" alt="Machine learning solutions" title="Machine learning solutions" height="120" width="120"></a>
  492. </div>
  493. <a href="machine-learning-engineers"><h4>Machine learning solutions</h4></a>
  494. <p>We apply machine learning algorithms and models to solve business challenges from prototyping phase to integration of models into production systems.
  495. </p>
  496.  
  497. </div>
  498. </div>
  499. </div>
  500. </section><div class="container">
  501. </div>
  502. </section>
  503. </main>
  504. <div class="scroll-to-top" data-spy="affix" data-offset-top="200"><a href="#to-top" class="smooth-scroll"><i class="fa fa-arrow-up"></i></a></div>
  505. <footer id="footer" class="site-footer">
  506. <div class="container">
  507.  
  508. <div id="sidebar-footer-1">
  509. <div class="row">
  510.  
  511. <aside class="widget col-md-3 col-sm-6">
  512. <h5 class="widget-title">About Us</h5>
  513. <p>ActiveWizards specialized on data science, machine learning, data visualizations and big data applications services.</p>
  514. </aside>
  515.  
  516. <aside class="widget col-md-3 col-sm-6">
  517. <h5 class="widget-title">Core Services</h5>
  518. <ul><li class="first"><a href="#services" >Data science applications</a></li><li><a href="#services" >Machine learning</a></li><li><a href="#services" >Data visualization</a></li><li><a href="#services" >Big data applications</a></li><li class="last"><a href="#services" >API design and production</a></li></ul>
  519. </aside>
  520.  
  521. <aside class="widget col-md-3 col-sm-6">
  522. <h5 class="widget-title">Contact Us</h5>
  523. <div class="textwidget">
  524. <div class="address" itemscope itemtype="http://schema.org/LocalBusiness">
  525.  
  526. <div itemprop="address" itemscope itemtype="http://schema.org/PostalAddress">
  527.  
  528.  
  529.  
  530. <br><meta itemprop="addressCountry" content="EN"/>
  531. </div>
  532.  
  533.  
  534. <a href="mai&#108;&#116;&#x6f;&#58;&#x68;&#x65;&#108;&#108;&#x6f;&#64;act&#x69;&#x76;&#x65;&#119;&#105;&#122;&#x61;&#x72;&#100;&#x73;&#46;&#x63;&#111;m" itemprop="email">&#x68;&#101;&#108;&#108;&#111;&#x40;&#97;&#99;&#x74;&#105;&#118;&#101;&#x77;&#x69;&#122;&#x61;r&#x64;&#x73;&#x2e;&#99;&#111;&#x6d;</a>
  535. <a href="" itemprop="url">activewizards.com</a>
  536. </div>
  537.  
  538. </aside>
  539.  
  540. <aside class="widget col-md-3 col-sm-6">
  541. <div class="row mailchimp-outer">
  542. <h5 class="widget-title" >Get the data science digest</h5>
  543. <p>We gather the best data science materials and occasionally send them into your inbox</p>
  544. <div class="input-group mailchimp-wrapper">
  545. <form action="blog/top-15-scala-libraries-for-data-science/#subscribe" method="post" id="subscribe">
  546. <input type="email" name="EMAIL" class="form-control" placeholder="Enter email" required value="">
  547. <span class="input-group-btn">
  548. <input type="submit" class="btn btn-danger" name="mmc_subscribe" value="Subscribe" onclick="mixpanel.track('Subscribe (Footer)');ga('send', 'event', 'Subscribe', 'click', 'Subscribe (Footer)');">
  549. </span>
  550. </form>
  551. </div>
  552. <script>
  553.  
  554.  
  555. </script>
  556. </div>
  557. <div class="row">
  558. <!--noindex-->
  559. <ul class="social-links">
  560. <li><a href="https://www.facebook.com/activewizards/" title="facebook" target="_blank" rel="noopener noreferrer nofollow"><i class="fa fa-facebook"></i></a></li>
  561. <li><a href="https://twitter.com/activewizards" title="twitter" target="_blank" rel="noopener noreferrer nofollow"><i class="fa fa-twitter"></i></a></li>
  562. <li><a href="https://www.linkedin.com/company/4790078" title="linkedin" target="_blank" rel="noopener noreferrer nofollow"><i class="fa fa-linkedin"></i></a></li>
  563.  
  564. <li><a href="https://github.com/activewizardslab" title="github" target="_blank" rel="me nofollow"><i class="fa fa-github"></i></a></li>
  565.  
  566. <li><a href="http://www.slideshare.net/activewizards" title="slideshare" target="_blank" rel="noopener noreferrer nofollow"><i class="fa fa-slideshare"></i></a><li>
  567. <li><a href="https://medium.com/activewizards-machine-learning-company" title="medium" target="_blank" rel="noopener noreferrer nofollow"><i class="fa fa-medium"></i></a><li>
  568.  
  569. </ul>
  570. <!--/noindex-->
  571. </div>
  572. </aside>
  573.  
  574. </div>
  575. </div>
  576.  
  577. <div class="copyright">
  578. <p><span>&copy; 2010-2018 ActiveWizards: data science and engineering lab </span> <br> Made with &hearts; by <a href="http://mylandingpage.website/?utm_source=aw&utm_medium=referral&utm_campaign=footerlink" target="_blank" onclick="mixpanel.track('AW Referal MYLP');ga('send', 'event', 'Referral', 'Click', 'Mylandingpage.website')">mylandingpage.website</a></p>
  579. </div>
  580.  
  581. </div>
  582. </footer>
  583. </div>
  584.  
  585. <script async type="text/javascript" src="https://www.google.com/recaptcha/api.js?hl=en"></script>
  586. <script>"undefined"==typeof window.jQuery&&document.write(unescape("%3Cscript src='design/js/vendor/jquery-1.11.1.min.js' type='text/javascript'%3E%3C/script%3E"));</script>
  587. <script defer src="/design/js/vendor/chosen.jquery.js"></script>
  588. <script>
  589. jQuery.cssHooks.backgroundColor = {
  590. get: function (e) {
  591. function o(e) {
  592. return ("0" + parseInt(e).toString(16)).slice(-2)
  593. }
  594. if (e.currentStyle) var t = e.currentStyle.backgroundColor;
  595. else if (window.getComputedStyle) var t = document.defaultView.getComputedStyle(e, null).getPropertyValue("background-color");
  596. return -1 == t.search("rgb") ? t : (t = t.match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/), "#" + o(t[1]) + o(t[2]) + o(t[3]))
  597. }
  598. }
  599. jQuery("body").addClass('light');
  600. </script>
  601.  
  602.  
  603. <script src="//load.sumome.com/" data-sumo-site-id="aeb93271120ae8c5cc836541ac9c12c26a4dd2e4a425766800d39b502c94f69b" async="async"></script>
  604. <!-- and fallback -->
  605. <!--webfont Lato -->
  606. <script type="text/javascript">
  607. jQuery('.nav a[href^="/#blog"]').click(function(){window.location.href='/blog/';});
  608. WebFontConfig={google:{families:["Lato:400,300,300italic,400italic,700,700italic:latin"]}},function(){var t=document.createElement("script");t.src=("https:"==document.location.protocol?"https":"http")+"://ajax.googleapis.com/ajax/libs/webfont/1/webfont.js",t.type="text/javascript",t.async="true";var e=document.getElementsByTagName("script")[0];e.parentNode.insertBefore(t,e)}();</script>
  609. <!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
  610. <!--[if lt IE 9]>
  611. <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
  612. <script src="https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js"></script>
  613. <!--[endif]-->
  614. <!-- browser update script -->
  615. <!--[if lte IE 8]>
  616. <script>function $buo_f(){var e=document.createElement("script");e.src="//browser-update.org/update.js",document.body.appendChild(e)}var $buoop={c:2};try{document.addEventListener("DOMContentLoaded",$buo_f,!1)}catch(e){window.attachEvent("onload",$buo_f)}</script>
  617. <![endif]-->
  618.  
  619.  
  620. <script type="text/javascript">
  621. try{
  622. function checkmail(e) {
  623. return reg = /[a-z0-9!#$%&'*+\/=?^_`{|}~-]+(?:.[a-z0-9!#$%&'*+\/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/, !e.match(reg)
  624. }
  625. jQuery(document).ready(function() {
  626. jQuery('.site-footer input[type="submit"]').click(function() {
  627. return checkmail(jQuery('#subscribe input[type="email"]').val()) ? (jQuery('#subscribe input[type="email"]').addClass("error"), !1) : void 0
  628. });
  629. jQuery('#subscribe-post input[type="submit"]').click(function() {
  630. return checkmail(jQuery('#subscribe-post input[type="email"]').val()) ? (jQuery('#subscribe-post input[type="email"]').addClass("error"), !1) : void 0
  631. }),
  632. jQuery('.mailchimp-wrapper form input[type="email"]').keyup(function() {
  633. jQuery(this).removeClass("error")
  634. });
  635.  
  636. });
  637. var $ = jQuery.noConflict();
  638. }catch(err){}
  639. </script>
  640.  
  641. <script src="https://embed.small.chat/T0507DD9LG5BBQUY94.js" async></script>
  642.  
  643. <!-- Google Tag Manager (noscript) -->
  644. <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-5RJ3225"
  645. height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
  646. <!-- End Google Tag Manager (noscript) -->
  647. <script>jQuery('.nav a[href^="/#blog"]').parent().addClass('active');
  648. jQuery('.nav a[href^="/#blog"]').click(function(){
  649. window.location.href='blog/';
  650. return false;
  651. });
  652. </script>
  653. <script type="text/javascript" src="/assets/components/minifyx/cache/scripts_19fb49c452.min.js"></script>
  654. </body>
  655. </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement