blob: 343ed5aa71ccc82bbf3797e72e6e126d5913a098 [file] [log] [blame]
<!-- HTML header for doxygen 1.8.4-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.4"/>
<meta name="keywords" content="madlib,postgres,greenplum,machine learning,data mining,deep learning,ensemble methods,data science,market basket analysis,affinity analysis,pca,lda,regression,elastic net,huber white,proportional hazards,k-means,latent dirichlet allocation,bayes,support vector machines,svm"/>
<title>MADlib: kmeans.sql_in File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
$(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
extensions: ["tex2jax.js", "TeX/AMSmath.js", "TeX/AMSsymbols.js"],
jax: ["input/TeX","output/HTML-CSS"],
});
</script><script src="../mathjax/MathJax.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="madlib_extra.css" rel="stylesheet" type="text/css"/>
<!-- google analytics -->
<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-45382226-1', 'auto');
ga('send', 'pageview');
</script>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">MADlib
&#160;<span id="projectnumber">1.5</span> <span style="font-size:10pt; font-style:italic"><a href="../latest/./kmeans_8sql__in.html"> A newer version is available</a></span>
</div>
<div id="projectbrief">User Documentation</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.4 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('kmeans_8sql__in.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Groups</a></div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="summary">
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">kmeans.sql_in File Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>Set of functions for k-means clustering.
<a href="#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:abcbeb5878d5a31f600764fbb1fbe5578"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="kmeans_8sql__in.html#abcbeb5878d5a31f600764fbb1fbe5578">internal_execute_using_kmeans_args</a> (varchar <a class="el" href="linear_8sql__in.html#a7e8f2ef77d769bc7c85e5ff69b42ef2d">sql</a>, float8[][], regproc, integer, float8, varchar)</td></tr>
<tr class="separator:abcbeb5878d5a31f600764fbb1fbe5578"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4a1b8fc3dd6da4d4491927888d70e7b9"><td class="memItemLeft" align="right" valign="top">integer&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="kmeans_8sql__in.html#a4a1b8fc3dd6da4d4491927888d70e7b9">internal_compute_kmeans</a> (varchar rel_args, varchar rel_state, varchar rel_source, varchar expr_point, varchar agg_centroid)</td></tr>
<tr class="separator:a4a1b8fc3dd6da4d4491927888d70e7b9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6e25194423cccea7a1fc58e68d5a05a8"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="kmeans_8sql__in.html#a6e25194423cccea7a1fc58e68d5a05a8">__kmeans_validate_src</a> (varchar rel_source)</td></tr>
<tr class="separator:a6e25194423cccea7a1fc58e68d5a05a8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae8bb21bf12220aa9de82792376afab7d"><td class="memItemLeft" align="right" valign="top">kmeans_result&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="kmeans_8sql__in.html#ae8bb21bf12220aa9de82792376afab7d">kmeans</a> (varchar rel_source, varchar expr_point, float8[][] initial_centroids, varchar fn_dist=&quot;squared_dist_norm2&quot;, varchar agg_centroid=&quot;avg&quot;, integer max_num_iterations=20, float8 min_frac_reassigned=0.001)</td></tr>
<tr class="memdesc:ae8bb21bf12220aa9de82792376afab7d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Perform Lloyd's k-means local-search heuristic. <a href="#ae8bb21bf12220aa9de82792376afab7d">More...</a><br/></td></tr>
<tr class="separator:ae8bb21bf12220aa9de82792376afab7d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa8eb8af6ae937ea9a2c771840929bac2"><td class="memItemLeft" align="right" valign="top">kmeans_result&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="kmeans_8sql__in.html#aa8eb8af6ae937ea9a2c771840929bac2">kmeans</a> (varchar rel_source, varchar expr_point, float8[][] initial_centroids, varchar fn_dist, varchar agg_centroid, integer max_num_iterations)</td></tr>
<tr class="separator:aa8eb8af6ae937ea9a2c771840929bac2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0313eea7d69ce2da006ea42a52318313"><td class="memItemLeft" align="right" valign="top">kmeans_result&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="kmeans_8sql__in.html#a0313eea7d69ce2da006ea42a52318313">kmeans</a> (varchar rel_source, varchar expr_point, float8[][] initial_centroids, varchar fn_dist, varchar agg_centroid)</td></tr>
<tr class="separator:a0313eea7d69ce2da006ea42a52318313"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a86dfbe713fcaed07896544fbf89f7e2a"><td class="memItemLeft" align="right" valign="top">kmeans_result&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="kmeans_8sql__in.html#a86dfbe713fcaed07896544fbf89f7e2a">kmeans</a> (varchar rel_source, varchar expr_point, float8[][] initial_centroids, varchar fn_dist)</td></tr>
<tr class="separator:a86dfbe713fcaed07896544fbf89f7e2a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8ae9422fbf1e2da9ff3a2d83cb1d502f"><td class="memItemLeft" align="right" valign="top">kmeans_result&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="kmeans_8sql__in.html#a8ae9422fbf1e2da9ff3a2d83cb1d502f">kmeans</a> (varchar rel_source, varchar expr_point, float8[][] initial_centroids)</td></tr>
<tr class="separator:a8ae9422fbf1e2da9ff3a2d83cb1d502f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a877648afb272cf8e53eafccb701f2c0b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="kmeans_8sql__in.html#a877648afb272cf8e53eafccb701f2c0b">internal_execute_using_kmeanspp_seeding_args</a> (varchar <a class="el" href="linear_8sql__in.html#a7e8f2ef77d769bc7c85e5ff69b42ef2d">sql</a>, integer, regproc, float8[][], varchar)</td></tr>
<tr class="separator:a877648afb272cf8e53eafccb701f2c0b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac5bd840626f1f26025ec589000bc83ff"><td class="memItemLeft" align="right" valign="top">integer&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="kmeans_8sql__in.html#ac5bd840626f1f26025ec589000bc83ff">internal_compute_kmeanspp_seeding</a> (varchar rel_args, varchar rel_state, varchar rel_source, varchar expr_point)</td></tr>
<tr class="separator:ac5bd840626f1f26025ec589000bc83ff"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af0d5172211c83d4de4d70a84555aa68e"><td class="memItemLeft" align="right" valign="top">float8[][]&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="kmeans_8sql__in.html#af0d5172211c83d4de4d70a84555aa68e">kmeanspp_seeding</a> (varchar rel_source, varchar expr_point, integer <a class="el" href="svd_8sql__in.html#ac55562e3550918c83a7a81f0ddc007dc">k</a>, varchar fn_dist=&quot;squared_dist_norm2&quot;, float8[][] initial_centroids=<a class="el" href="marginal_8sql__in.html#a1bcd2f9adc5825caadb97a9fe1838b8a">NULL</a>)</td></tr>
<tr class="memdesc:af0d5172211c83d4de4d70a84555aa68e"><td class="mdescLeft">&#160;</td><td class="mdescRight">k-Means++ Seeding <a href="#af0d5172211c83d4de4d70a84555aa68e">More...</a><br/></td></tr>
<tr class="separator:af0d5172211c83d4de4d70a84555aa68e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab3325f44ac25344d2410650582dc2f21"><td class="memItemLeft" align="right" valign="top">float8[][]&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="kmeans_8sql__in.html#ab3325f44ac25344d2410650582dc2f21">kmeanspp_seeding</a> (varchar rel_source, varchar expr_point, integer <a class="el" href="svd_8sql__in.html#ac55562e3550918c83a7a81f0ddc007dc">k</a>, varchar fn_dist)</td></tr>
<tr class="separator:ab3325f44ac25344d2410650582dc2f21"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac0aa5d305fe1fc68eddfcd40f3c3e923"><td class="memItemLeft" align="right" valign="top">float8[][]&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="kmeans_8sql__in.html#ac0aa5d305fe1fc68eddfcd40f3c3e923">kmeanspp_seeding</a> (varchar rel_source, varchar expr_point, integer <a class="el" href="svd_8sql__in.html#ac55562e3550918c83a7a81f0ddc007dc">k</a>)</td></tr>
<tr class="separator:ac0aa5d305fe1fc68eddfcd40f3c3e923"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac6c26c8e6b4643acfa79a87bd3ab0fe4"><td class="memItemLeft" align="right" valign="top">kmeans_result&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="kmeans_8sql__in.html#ac6c26c8e6b4643acfa79a87bd3ab0fe4">kmeanspp</a> (varchar rel_source, varchar expr_point, integer <a class="el" href="svd_8sql__in.html#ac55562e3550918c83a7a81f0ddc007dc">k</a>, varchar fn_dist=&quot;squared_dist_norm2&quot;, varchar agg_centroid=&quot;avg&quot;, integer max_num_iterations=20, float8 min_frac_reassigned=0.001)</td></tr>
<tr class="memdesc:ac6c26c8e6b4643acfa79a87bd3ab0fe4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Run k-Means++. <a href="#ac6c26c8e6b4643acfa79a87bd3ab0fe4">More...</a><br/></td></tr>
<tr class="separator:ac6c26c8e6b4643acfa79a87bd3ab0fe4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a35dcd1d3c884c4bec5a01cb7952c411a"><td class="memItemLeft" align="right" valign="top">kmeans_result&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="kmeans_8sql__in.html#a35dcd1d3c884c4bec5a01cb7952c411a">kmeanspp</a> (varchar rel_source, varchar expr_point, integer <a class="el" href="svd_8sql__in.html#ac55562e3550918c83a7a81f0ddc007dc">k</a>, varchar fn_dist, varchar agg_centroid, integer max_num_iterations)</td></tr>
<tr class="separator:a35dcd1d3c884c4bec5a01cb7952c411a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9c8cdb92f8505aa2a34e75b73eb71f03"><td class="memItemLeft" align="right" valign="top">kmeans_result&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="kmeans_8sql__in.html#a9c8cdb92f8505aa2a34e75b73eb71f03">kmeanspp</a> (varchar rel_source, varchar expr_point, integer <a class="el" href="svd_8sql__in.html#ac55562e3550918c83a7a81f0ddc007dc">k</a>, varchar fn_dist, varchar agg_centroid)</td></tr>
<tr class="separator:a9c8cdb92f8505aa2a34e75b73eb71f03"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4a686ca50f687124336ee144462cd2e9"><td class="memItemLeft" align="right" valign="top">kmeans_result&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="kmeans_8sql__in.html#a4a686ca50f687124336ee144462cd2e9">kmeanspp</a> (varchar rel_source, varchar expr_point, integer <a class="el" href="svd_8sql__in.html#ac55562e3550918c83a7a81f0ddc007dc">k</a>, varchar fn_dist)</td></tr>
<tr class="separator:a4a686ca50f687124336ee144462cd2e9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a639178dacebca2a2114923038398d6bb"><td class="memItemLeft" align="right" valign="top">kmeans_result&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="kmeans_8sql__in.html#a639178dacebca2a2114923038398d6bb">kmeanspp</a> (varchar rel_source, varchar expr_point, integer <a class="el" href="svd_8sql__in.html#ac55562e3550918c83a7a81f0ddc007dc">k</a>)</td></tr>
<tr class="separator:a639178dacebca2a2114923038398d6bb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac8f57c39fc18e2591b12f27306c53166"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="kmeans_8sql__in.html#ac8f57c39fc18e2591b12f27306c53166">internal_execute_using_kmeans_random_seeding_args</a> (varchar <a class="el" href="linear_8sql__in.html#a7e8f2ef77d769bc7c85e5ff69b42ef2d">sql</a>, integer, float8[][])</td></tr>
<tr class="separator:ac8f57c39fc18e2591b12f27306c53166"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8a1d225f2650abcbd51e134bbc87bc02"><td class="memItemLeft" align="right" valign="top">integer&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="kmeans_8sql__in.html#a8a1d225f2650abcbd51e134bbc87bc02">internal_compute_kmeans_random_seeding</a> (varchar rel_args, varchar rel_state, varchar rel_source, varchar expr_point)</td></tr>
<tr class="separator:a8a1d225f2650abcbd51e134bbc87bc02"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a01e02736e6d156240b15f7d6dae092c3"><td class="memItemLeft" align="right" valign="top">float8[][]&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="kmeans_8sql__in.html#a01e02736e6d156240b15f7d6dae092c3">kmeans_random_seeding</a> (varchar rel_source, varchar expr_point, integer <a class="el" href="svd_8sql__in.html#ac55562e3550918c83a7a81f0ddc007dc">k</a>, float8[][] initial_centroids=<a class="el" href="marginal_8sql__in.html#a1bcd2f9adc5825caadb97a9fe1838b8a">NULL</a>)</td></tr>
<tr class="memdesc:a01e02736e6d156240b15f7d6dae092c3"><td class="mdescLeft">&#160;</td><td class="mdescRight">k-Means Random Seeding <a href="#a01e02736e6d156240b15f7d6dae092c3">More...</a><br/></td></tr>
<tr class="separator:a01e02736e6d156240b15f7d6dae092c3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a028c098e4ad2c14bb9d67bc67ad9b857"><td class="memItemLeft" align="right" valign="top">float8[][]&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="kmeans_8sql__in.html#a028c098e4ad2c14bb9d67bc67ad9b857">kmeans_random_seeding</a> (varchar rel_source, varchar expr_point, integer <a class="el" href="svd_8sql__in.html#ac55562e3550918c83a7a81f0ddc007dc">k</a>)</td></tr>
<tr class="separator:a028c098e4ad2c14bb9d67bc67ad9b857"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aeec5efd06aca50f4830aa10d522dc5ed"><td class="memItemLeft" align="right" valign="top">kmeans_result&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="kmeans_8sql__in.html#aeec5efd06aca50f4830aa10d522dc5ed">kmeans_random</a> (varchar rel_source, varchar expr_point, integer <a class="el" href="svd_8sql__in.html#ac55562e3550918c83a7a81f0ddc007dc">k</a>, varchar fn_dist=&quot;squared_dist_norm2&quot;, varchar agg_centroid=&quot;avg&quot;, integer max_num_iterations=20, float8 min_frac_reassigned=0.001)</td></tr>
<tr class="memdesc:aeec5efd06aca50f4830aa10d522dc5ed"><td class="mdescLeft">&#160;</td><td class="mdescRight">Run k-Means with random seeding. <a href="#aeec5efd06aca50f4830aa10d522dc5ed">More...</a><br/></td></tr>
<tr class="separator:aeec5efd06aca50f4830aa10d522dc5ed"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7b975d63455d187ef84b541742cfa7d8"><td class="memItemLeft" align="right" valign="top">kmeans_result&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="kmeans_8sql__in.html#a7b975d63455d187ef84b541742cfa7d8">kmeans_random</a> (varchar rel_source, varchar expr_point, integer <a class="el" href="svd_8sql__in.html#ac55562e3550918c83a7a81f0ddc007dc">k</a>, varchar fn_dist, varchar agg_centroid, integer max_num_iterations)</td></tr>
<tr class="separator:a7b975d63455d187ef84b541742cfa7d8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab94f0518d34484bc30663ee9e479cf6e"><td class="memItemLeft" align="right" valign="top">kmeans_result&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="kmeans_8sql__in.html#ab94f0518d34484bc30663ee9e479cf6e">kmeans_random</a> (varchar rel_source, varchar expr_point, integer <a class="el" href="svd_8sql__in.html#ac55562e3550918c83a7a81f0ddc007dc">k</a>, varchar fn_dist, varchar agg_centroid)</td></tr>
<tr class="separator:ab94f0518d34484bc30663ee9e479cf6e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9383cf73706bee81f8647bc2af6d5385"><td class="memItemLeft" align="right" valign="top">kmeans_result&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="kmeans_8sql__in.html#a9383cf73706bee81f8647bc2af6d5385">kmeans_random</a> (varchar rel_source, varchar expr_point, integer <a class="el" href="svd_8sql__in.html#ac55562e3550918c83a7a81f0ddc007dc">k</a>, varchar fn_dist)</td></tr>
<tr class="separator:a9383cf73706bee81f8647bc2af6d5385"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a66ac1cab8811c4d842de1bc221886b53"><td class="memItemLeft" align="right" valign="top">kmeans_result&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="kmeans_8sql__in.html#a66ac1cab8811c4d842de1bc221886b53">kmeans_random</a> (varchar rel_source, varchar expr_point, integer <a class="el" href="svd_8sql__in.html#ac55562e3550918c83a7a81f0ddc007dc">k</a>)</td></tr>
<tr class="separator:a66ac1cab8811c4d842de1bc221886b53"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a63fe3ed1f26fc2c29be1234ac8a69949"><td class="memItemLeft" align="right" valign="top">kmeans_result&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="kmeans_8sql__in.html#a63fe3ed1f26fc2c29be1234ac8a69949">internal_execute_using_kmeans_args</a> (varchar <a class="el" href="linear_8sql__in.html#a7e8f2ef77d769bc7c85e5ff69b42ef2d">sql</a>, varchar rel_source, varchar expr_point, varchar fn_dist, varchar agg_centroid, integer max_num_iterations, float8 min_frac_reassigned)</td></tr>
<tr class="separator:a63fe3ed1f26fc2c29be1234ac8a69949"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0b734c713276709d6e7964a763c4ed5a"><td class="memItemLeft" align="right" valign="top">varchar&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="kmeans_8sql__in.html#a0b734c713276709d6e7964a763c4ed5a">__filter_input_relation</a> (varchar rel_source, varchar expr_point)</td></tr>
<tr class="separator:a0b734c713276709d6e7964a763c4ed5a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6e1a47f006bc0576f56eabcd6903086f"><td class="memItemLeft" align="right" valign="top">kmeans_result&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="kmeans_8sql__in.html#a6e1a47f006bc0576f56eabcd6903086f">kmeans</a> (varchar rel_source, varchar expr_point, varchar rel_initial_centroids, varchar expr_centroid, varchar fn_dist=&quot;squared_dist_norm2&quot;, varchar agg_centroid=&quot;avg&quot;, integer max_num_iterations=20, float8 min_frac_reassigned=0.001)</td></tr>
<tr class="memdesc:a6e1a47f006bc0576f56eabcd6903086f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Perform Lloyd's k-means local-search heuristic, but with initial centroids stored in a table. <a href="#a6e1a47f006bc0576f56eabcd6903086f">More...</a><br/></td></tr>
<tr class="separator:a6e1a47f006bc0576f56eabcd6903086f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad61d8f4f6d4ee5be69bccac03437cb0d"><td class="memItemLeft" align="right" valign="top">kmeans_result&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="kmeans_8sql__in.html#ad61d8f4f6d4ee5be69bccac03437cb0d">kmeans</a> (varchar rel_source, varchar expr_point, varchar rel_initial_centroids, varchar expr_centroid, varchar fn_dist, varchar agg_centroid, integer max_num_iterations)</td></tr>
<tr class="separator:ad61d8f4f6d4ee5be69bccac03437cb0d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac4212451822b6652e576cec5e5de6ff8"><td class="memItemLeft" align="right" valign="top">kmeans_result&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="kmeans_8sql__in.html#ac4212451822b6652e576cec5e5de6ff8">kmeans</a> (varchar rel_source, varchar expr_point, varchar rel_initial_centroids, varchar expr_centroid, varchar fn_dist, varchar agg_centroid)</td></tr>
<tr class="separator:ac4212451822b6652e576cec5e5de6ff8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9a8278b2af7a173f633915cb6662d104"><td class="memItemLeft" align="right" valign="top">kmeans_result&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="kmeans_8sql__in.html#a9a8278b2af7a173f633915cb6662d104">kmeans</a> (varchar rel_source, varchar expr_point, varchar rel_initial_centroids, varchar expr_centroid, varchar fn_dist)</td></tr>
<tr class="separator:a9a8278b2af7a173f633915cb6662d104"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afdae42b563f1f8bca3937dbbbacaa1c3"><td class="memItemLeft" align="right" valign="top">kmeans_result&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="kmeans_8sql__in.html#afdae42b563f1f8bca3937dbbbacaa1c3">kmeans</a> (varchar rel_source, varchar expr_point, varchar rel_initial_centroids, varchar expr_centroid)</td></tr>
<tr class="separator:afdae42b563f1f8bca3937dbbbacaa1c3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab0bb31adb374a364c1bd76206efcb5e3"><td class="memItemLeft" align="right" valign="top">float8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="kmeans_8sql__in.html#ab0bb31adb374a364c1bd76206efcb5e3">internal_execute_using_silhouette_args</a> (varchar <a class="el" href="linear_8sql__in.html#a7e8f2ef77d769bc7c85e5ff69b42ef2d">sql</a>, float8[][] centroids, regproc fn_dist, varchar fn_dist_name)</td></tr>
<tr class="separator:ab0bb31adb374a364c1bd76206efcb5e3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a71e7675758c99acbe7785819b6a85a8f"><td class="memItemLeft" align="right" valign="top">float8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="kmeans_8sql__in.html#a71e7675758c99acbe7785819b6a85a8f">simple_silhouette</a> (varchar rel_source, varchar expr_point, float8[][] centroids, varchar fn_dist=&quot;dist_norm2&quot;)</td></tr>
<tr class="memdesc:a71e7675758c99acbe7785819b6a85a8f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Compute a simplified version of the silhouette coefficient. <a href="#a71e7675758c99acbe7785819b6a85a8f">More...</a><br/></td></tr>
<tr class="separator:a71e7675758c99acbe7785819b6a85a8f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a91df914d5d0ef604e8f6cc831bd84e6a"><td class="memItemLeft" align="right" valign="top">float8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="kmeans_8sql__in.html#a91df914d5d0ef604e8f6cc831bd84e6a">simple_silhouette</a> (varchar rel_source, varchar expr_point, float8[][] centroids)</td></tr>
<tr class="separator:a91df914d5d0ef604e8f6cc831bd84e6a"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><dl class="section see"><dt>See Also</dt><dd>For a brief introduction to k-means clustering, see the module description <a class="el" href="group__grp__kmeans.html">k-Means Clustering</a>. </dd></dl>
</div><h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="a0b734c713276709d6e7964a763c4ed5a"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">varchar __filter_input_relation </td>
<td>(</td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>rel_source</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>expr_point</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a6e25194423cccea7a1fc58e68d5a05a8"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void __kmeans_validate_src </td>
<td>(</td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>rel_source</em>)</td><td></td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a4a1b8fc3dd6da4d4491927888d70e7b9"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">integer internal_compute_kmeans </td>
<td>(</td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>rel_args</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>rel_state</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>rel_source</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>expr_point</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>agg_centroid</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a8a1d225f2650abcbd51e134bbc87bc02"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">integer internal_compute_kmeans_random_seeding </td>
<td>(</td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>rel_args</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>rel_state</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>rel_source</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>expr_point</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="ac5bd840626f1f26025ec589000bc83ff"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">integer internal_compute_kmeanspp_seeding </td>
<td>(</td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>rel_args</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>rel_state</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>rel_source</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>expr_point</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="abcbeb5878d5a31f600764fbb1fbe5578"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void internal_execute_using_kmeans_args </td>
<td>(</td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>sql</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float8&#160;</td>
<td class="paramname">[][], </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">regproc&#160;</td>
<td class="paramname">, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">integer&#160;</td>
<td class="paramname">, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float8&#160;</td>
<td class="paramname">, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname">&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a63fe3ed1f26fc2c29be1234ac8a69949"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">kmeans_result internal_execute_using_kmeans_args </td>
<td>(</td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>sql</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>rel_source</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>expr_point</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>fn_dist</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>agg_centroid</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">integer&#160;</td>
<td class="paramname"><em>max_num_iterations</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float8&#160;</td>
<td class="paramname"><em>min_frac_reassigned</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="ac8f57c39fc18e2591b12f27306c53166"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void internal_execute_using_kmeans_random_seeding_args </td>
<td>(</td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>sql</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">integer&#160;</td>
<td class="paramname">, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float8&#160;</td>
<td class="paramname">[][]&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a877648afb272cf8e53eafccb701f2c0b"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void internal_execute_using_kmeanspp_seeding_args </td>
<td>(</td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>sql</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">integer&#160;</td>
<td class="paramname">, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">regproc&#160;</td>
<td class="paramname">, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float8&#160;</td>
<td class="paramname">[][], </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname">&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="ab0bb31adb374a364c1bd76206efcb5e3"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">float8 internal_execute_using_silhouette_args </td>
<td>(</td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>sql</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float8&#160;</td>
<td class="paramname"><em>centroids</em>[][], </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">regproc&#160;</td>
<td class="paramname"><em>fn_dist</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>fn_dist_name</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="ae8bb21bf12220aa9de82792376afab7d"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">kmeans_result kmeans </td>
<td>(</td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>rel_source</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>expr_point</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float8&#160;</td>
<td class="paramname"><em>initial_centroids</em>[][], </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>fn_dist</em> = <code>&quot;squared_dist_norm2&quot;</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>agg_centroid</em> = <code>&quot;avg&quot;</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">integer&#160;</td>
<td class="paramname"><em>max_num_iterations</em> = <code>20</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float8&#160;</td>
<td class="paramname"><em>min_frac_reassigned</em> = <code>0.001</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">rel_source</td><td>Name of the relation containing input points </td></tr>
<tr><td class="paramname">expr_point</td><td>Expression evaluating to point coordinates for each tuple </td></tr>
<tr><td class="paramname">initial_centroids</td><td>Matrix containing the initial centroids as columns </td></tr>
<tr><td class="paramname">fn_dist</td><td>Name of a function with signature <code>DOUBLE PRECISION[] x DOUBLE PRECISION[] -&gt; DOUBLE PRECISION</code> that returns the distance between two points. The default is the <a class="el" href="linalg_8sql__in.html#a00a08e69f27524f2096032214e15b668">squared Euclidean distance</a>. </td></tr>
<tr><td class="paramname">agg_centroid</td><td>Name of an aggregate function with signature <code>DOUBLE PRECISION[] -&gt; DOUBLE PRECISION[]</code> that, for each group of points, returns a centroid. In order for Lloyd's local-search heuristic to provably converge and to return a local minimum, this centroid should minimize the sum of distances between each point in the group and the centroid. The default is the <a class="el" href="linalg_8sql__in.html#a1aa37f73fb1cd8d7d106aa518dd8c0b4">average (mean/barycenter in Euclidean space)</a>, which satisfies this property if <code>fn_dist = 'squared_dist_norm2'</code>. </td></tr>
<tr><td class="paramname">max_num_iterations</td><td>Maximum number of iterations </td></tr>
<tr><td class="paramname">min_frac_reassigned</td><td>Fraction of reassigned points below which convergence is assumed and the algorithm terminates </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A composite value:<ul>
<li><code>centroids</code> - Matrix with \( k \) centroids as columns.</li>
<li><code>frac_reassigned</code> - Fraction of points that were assigned a different centroid in the last iteration.</li>
<li><code>num_iterations</code> - The number of iterations before the algorithm terminated </li>
</ul>
</dd></dl>
</div>
</div>
<a class="anchor" id="aa8eb8af6ae937ea9a2c771840929bac2"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">kmeans_result kmeans </td>
<td>(</td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>rel_source</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>expr_point</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float8&#160;</td>
<td class="paramname"><em>initial_centroids</em>[][], </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>fn_dist</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>agg_centroid</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">integer&#160;</td>
<td class="paramname"><em>max_num_iterations</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a0313eea7d69ce2da006ea42a52318313"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">kmeans_result kmeans </td>
<td>(</td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>rel_source</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>expr_point</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float8&#160;</td>
<td class="paramname"><em>initial_centroids</em>[][], </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>fn_dist</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>agg_centroid</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a86dfbe713fcaed07896544fbf89f7e2a"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">kmeans_result kmeans </td>
<td>(</td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>rel_source</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>expr_point</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float8&#160;</td>
<td class="paramname"><em>initial_centroids</em>[][], </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>fn_dist</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a8ae9422fbf1e2da9ff3a2d83cb1d502f"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">kmeans_result kmeans </td>
<td>(</td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>rel_source</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>expr_point</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float8&#160;</td>
<td class="paramname"><em>initial_centroids</em>[][]&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a6e1a47f006bc0576f56eabcd6903086f"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">kmeans_result kmeans </td>
<td>(</td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>rel_source</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>expr_point</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>rel_initial_centroids</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>expr_centroid</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>fn_dist</em> = <code>&quot;squared_dist_norm2&quot;</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>agg_centroid</em> = <code>&quot;avg&quot;</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">integer&#160;</td>
<td class="paramname"><em>max_num_iterations</em> = <code>20</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float8&#160;</td>
<td class="paramname"><em>min_frac_reassigned</em> = <code>0.001</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>This is a shortcut for running k-means with initial centroids stored in a table (as opposed to an array of centroids). It is equivalent to </p>
<pre>SELECT <a class="el" href="kmeans_8sql__in.html#afdae42b563f1f8bca3937dbbbacaa1c3">kmeans</a>(
rel_source,
expr_point,
(SELECT matrix_agg($expr_centroid) FROM $rel_initial_centroids),
fn_dist,
agg_centroid,
max_num_iterations,
min_frac_reassigned
)</pre><p> where <code>$expr_centroid</code> and <code>$rel_initial_centroids</code> denote textual substituions. </p>
</div>
</div>
<a class="anchor" id="ad61d8f4f6d4ee5be69bccac03437cb0d"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">kmeans_result kmeans </td>
<td>(</td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>rel_source</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>expr_point</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>rel_initial_centroids</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>expr_centroid</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>fn_dist</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>agg_centroid</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">integer&#160;</td>
<td class="paramname"><em>max_num_iterations</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="ac4212451822b6652e576cec5e5de6ff8"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">kmeans_result kmeans </td>
<td>(</td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>rel_source</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>expr_point</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>rel_initial_centroids</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>expr_centroid</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>fn_dist</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>agg_centroid</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a9a8278b2af7a173f633915cb6662d104"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">kmeans_result kmeans </td>
<td>(</td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>rel_source</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>expr_point</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>rel_initial_centroids</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>expr_centroid</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>fn_dist</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="afdae42b563f1f8bca3937dbbbacaa1c3"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">kmeans_result kmeans </td>
<td>(</td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>rel_source</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>expr_point</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>rel_initial_centroids</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>expr_centroid</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="aeec5efd06aca50f4830aa10d522dc5ed"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">kmeans_result kmeans_random </td>
<td>(</td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>rel_source</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>expr_point</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">integer&#160;</td>
<td class="paramname"><em>k</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>fn_dist</em> = <code>&quot;squared_dist_norm2&quot;</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>agg_centroid</em> = <code>&quot;avg&quot;</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">integer&#160;</td>
<td class="paramname"><em>max_num_iterations</em> = <code>20</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float8&#160;</td>
<td class="paramname"><em>min_frac_reassigned</em> = <code>0.001</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>This is a shortcut for running k-means with random seeding. It is equivalent to </p>
<pre>SELECT <a class="el" href="kmeans_8sql__in.html#afdae42b563f1f8bca3937dbbbacaa1c3">kmeans</a>(
rel_source,
expr_point,
<a class="el" href="kmeans_8sql__in.html#a028c098e4ad2c14bb9d67bc67ad9b857">kmeans_random_seeding</a>(
rel_source,
expr_point,
k
),
fn_dist,
agg_centroid,
max_num_iterations,
min_frac_reassigned
)</pre>
</div>
</div>
<a class="anchor" id="a7b975d63455d187ef84b541742cfa7d8"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">kmeans_result kmeans_random </td>
<td>(</td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>rel_source</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>expr_point</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">integer&#160;</td>
<td class="paramname"><em>k</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>fn_dist</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>agg_centroid</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">integer&#160;</td>
<td class="paramname"><em>max_num_iterations</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="ab94f0518d34484bc30663ee9e479cf6e"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">kmeans_result kmeans_random </td>
<td>(</td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>rel_source</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>expr_point</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">integer&#160;</td>
<td class="paramname"><em>k</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>fn_dist</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>agg_centroid</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a9383cf73706bee81f8647bc2af6d5385"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">kmeans_result kmeans_random </td>
<td>(</td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>rel_source</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>expr_point</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">integer&#160;</td>
<td class="paramname"><em>k</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>fn_dist</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a66ac1cab8811c4d842de1bc221886b53"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">kmeans_result kmeans_random </td>
<td>(</td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>rel_source</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>expr_point</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">integer&#160;</td>
<td class="paramname"><em>k</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a01e02736e6d156240b15f7d6dae092c3"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">float8 [][] kmeans_random_seeding </td>
<td>(</td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>rel_source</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>expr_point</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">integer&#160;</td>
<td class="paramname"><em>k</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float8&#160;</td>
<td class="paramname"><em>initial_centroids</em>[][] = <code><a class="el" href="marginal_8sql__in.html#a1bcd2f9adc5825caadb97a9fe1838b8a">NULL</a></code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">rel_source</td><td>Name of the relation containing input points </td></tr>
<tr><td class="paramname">expr_point</td><td>Expression evaluating to point coordinates for each tuple </td></tr>
<tr><td class="paramname">k</td><td>Number of centroids </td></tr>
<tr><td class="paramname">initial_centroids</td><td>A matrix containing up to \( k \) columns as columns. <a class="el" href="kmeans_8sql__in.html#af0d5172211c83d4de4d70a84555aa68e" title="k-Means++ Seeding ">kmeanspp_seeding()</a> proceeds exactly as if these centroids had already been generated in previous iterations. This parameter may be NULL in which all \( k \) centroids will be generated. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A matrix containing \( k \) centroids as columns </dd></dl>
</div>
</div>
<a class="anchor" id="a028c098e4ad2c14bb9d67bc67ad9b857"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">float8 [][] kmeans_random_seeding </td>
<td>(</td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>rel_source</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>expr_point</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">integer&#160;</td>
<td class="paramname"><em>k</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="ac6c26c8e6b4643acfa79a87bd3ab0fe4"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">kmeans_result kmeanspp </td>
<td>(</td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>rel_source</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>expr_point</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">integer&#160;</td>
<td class="paramname"><em>k</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>fn_dist</em> = <code>&quot;squared_dist_norm2&quot;</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>agg_centroid</em> = <code>&quot;avg&quot;</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">integer&#160;</td>
<td class="paramname"><em>max_num_iterations</em> = <code>20</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float8&#160;</td>
<td class="paramname"><em>min_frac_reassigned</em> = <code>0.001</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>This is a shortcut for running k-means++. It is equivalent to </p>
<pre>SELECT <a class="el" href="kmeans_8sql__in.html#afdae42b563f1f8bca3937dbbbacaa1c3">kmeans</a>(
rel_source,
expr_point,
<a class="el" href="kmeans_8sql__in.html#ac0aa5d305fe1fc68eddfcd40f3c3e923">kmeanspp_seeding</a>(
rel_source,
expr_point,
k,
fn_dist
),
fn_dist,
agg_centroid,
max_num_iterations,
min_frac_reassigned
)</pre>
</div>
</div>
<a class="anchor" id="a35dcd1d3c884c4bec5a01cb7952c411a"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">kmeans_result kmeanspp </td>
<td>(</td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>rel_source</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>expr_point</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">integer&#160;</td>
<td class="paramname"><em>k</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>fn_dist</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>agg_centroid</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">integer&#160;</td>
<td class="paramname"><em>max_num_iterations</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a9c8cdb92f8505aa2a34e75b73eb71f03"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">kmeans_result kmeanspp </td>
<td>(</td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>rel_source</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>expr_point</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">integer&#160;</td>
<td class="paramname"><em>k</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>fn_dist</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>agg_centroid</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a4a686ca50f687124336ee144462cd2e9"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">kmeans_result kmeanspp </td>
<td>(</td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>rel_source</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>expr_point</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">integer&#160;</td>
<td class="paramname"><em>k</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>fn_dist</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a639178dacebca2a2114923038398d6bb"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">kmeans_result kmeanspp </td>
<td>(</td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>rel_source</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>expr_point</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">integer&#160;</td>
<td class="paramname"><em>k</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="af0d5172211c83d4de4d70a84555aa68e"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">float8 [][] kmeanspp_seeding </td>
<td>(</td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>rel_source</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>expr_point</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">integer&#160;</td>
<td class="paramname"><em>k</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>fn_dist</em> = <code>&quot;squared_dist_norm2&quot;</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float8&#160;</td>
<td class="paramname"><em>initial_centroids</em>[][] = <code><a class="el" href="marginal_8sql__in.html#a1bcd2f9adc5825caadb97a9fe1838b8a">NULL</a></code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">rel_source</td><td>Name of the relation containing input points </td></tr>
<tr><td class="paramname">expr_point</td><td>Expression evaluating to point coordinates for each tuple </td></tr>
<tr><td class="paramname">k</td><td>Number of centroids </td></tr>
<tr><td class="paramname">fn_dist</td><td>Name of a function with signature <code>DOUBLE PRECISION[] x DOUBLE PRECISION[] -&gt; DOUBLE PRECISION</code> that returns the distance between two points </td></tr>
<tr><td class="paramname">initial_centroids</td><td>A matrix containing up to \( k \) columns as columns. <a class="el" href="kmeans_8sql__in.html#af0d5172211c83d4de4d70a84555aa68e" title="k-Means++ Seeding ">kmeanspp_seeding()</a> proceeds exactly as if these centroids had already been generated in previous iterations. This parameter may be NULL in which all \( k \) centroids will be generated. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A matrix containing \( k \) centroids as columns </dd></dl>
</div>
</div>
<a class="anchor" id="ab3325f44ac25344d2410650582dc2f21"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">float8 [][] kmeanspp_seeding </td>
<td>(</td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>rel_source</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>expr_point</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">integer&#160;</td>
<td class="paramname"><em>k</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>fn_dist</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="ac0aa5d305fe1fc68eddfcd40f3c3e923"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">float8 [][] kmeanspp_seeding </td>
<td>(</td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>rel_source</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>expr_point</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">integer&#160;</td>
<td class="paramname"><em>k</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a71e7675758c99acbe7785819b6a85a8f"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">float8 simple_silhouette </td>
<td>(</td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>rel_source</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>expr_point</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float8&#160;</td>
<td class="paramname"><em>centroids</em>[][], </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>fn_dist</em> = <code>&quot;dist_norm2&quot;</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">rel_source</td><td>Name of the relation containing input points </td></tr>
<tr><td class="paramname">expr_point</td><td>Expression evaluating to point coordinates \( x_i \) for each tuple </td></tr>
<tr><td class="paramname">centroids</td><td>Matrix \( M = (\vec{m_0} \dots \vec{m_{k-1}}) \in \mathbb{R}^{d \times k} \) with \( k \) columns, where column \( i \) contains the position of centroid \( i \). </td></tr>
<tr><td class="paramname">fn_dist</td><td>Name of a function with signature <code>DOUBLE PRECISION[] x DOUBLE PRECISION[] -&gt; DOUBLE PRECISION</code> that returns the distance between two points </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>For each point \( x_i \), let \( d_1( x_i ) \) and \( d_2( x_i ) \) be the distance to the closest and 2nd-closest centroid, respectively. If there is more than one closest centroids then \( d_1( x_i ) = d_2( x_i )\). The return value is the average, over all points \( x_i \), of <p class="formulaDsp">
\[ \frac{d_2( x_i ) - d_1(x_i)}{d_2(x_i)}, \]
</p>
where 0/0 is interpreted as 0. Clearly, the simplified silhouette coefficient assumes values in \( [0,1] \). </dd></dl>
</div>
</div>
<a class="anchor" id="a91df914d5d0ef604e8f6cc831bd84e6a"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">float8 simple_silhouette </td>
<td>(</td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>rel_source</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">varchar&#160;</td>
<td class="paramname"><em>expr_point</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float8&#160;</td>
<td class="paramname"><em>centroids</em>[][]&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_efbcf68973d247bbf15f9eecae7f24e3.html">ports</a></li><li class="navelem"><a class="el" href="dir_a4a48839224ef8488facbffa8a397967.html">postgres</a></li><li class="navelem"><a class="el" href="dir_dc596537ad427a4d866006d1a3e1fe29.html">modules</a></li><li class="navelem"><a class="el" href="dir_73ccba3aa44ce35463f879b4ebbd3f46.html">kmeans</a></li><li class="navelem"><a class="el" href="kmeans_8sql__in.html">kmeans.sql_in</a></li>
<li class="footer">Generated on Thu Jul 3 2014 17:40:28 for MADlib by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.4 </li>
</ul>
</div>
</body>
</html>