下面是一段javascript和自然分类算法相关的实例代码,希望能够给大家带来一定的帮助。

代码实例如下:
   [ 其他 ] 运行代码    下载代码
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>自然分类法算法</title>
<script type="text/javascript">
function getJenksBreaks(data,numclass) 
{
  function sortNumber(a,b)
  {
    return a - b
  }
  var numdata = data.length;
  data.sort(sortNumber); 
  var mat1=new Array();
  var mat2=new Array();
  var st=new Array();
  for (var j = 0; j <= numdata; j++)
  {
    mat1[j]=new Array();
    mat2[j]=new Array();
    st[j]=0;
    for(var i=0;i<=numclass;i++)
    {
      mat1[j][i] = 0;
      mat2[j][i] = 0;
    }
  }
  for (var i = 1; i <= numclass; i++) 
  {
    mat1[1][i] = 1;
    mat2[1][i] = 0;
    for (var j = 2; j <= numdata; j++)
    {
      mat2[j][i] = Number.MAX_VALUE;
    }
  }
  var v=0;
  for (var l = 2; l <= numdata; l++) 
  {
    var s1=0;
    var s2=0;
    var w=0;
    var i3=0;
    for (var m = 1; m <= l; m++) 
    {
      i3 = l - m + 1;
      var val=parseInt(data[i3-1]);
      s2 += val * val;
      s1 += val;
      w++;
      v = s2 - (s1 * s1) / w;
      var i4 = i3 - 1;
      if (i4 != 0) 
      {
        for (var j = 2; j <= numclass; j++) 
        {
          if(mat2[l][j] >= (v + mat2[i4][j - 1])) 
          {
            mat1[l][j] = i3;
            mat2[l][j] = v + mat2[i4][j - 1];
            if(l==200&&j==5) 
            alert("l="+200+",j="+5+";mat2[200][5]="+mat1[l][j]+"i3="+i3);
          }
        }
      }
    }
    mat1[l][1] = 1;
    mat2[l][1] = v;
  }
  var k = numdata;
  var kclass=new Array();
  kclass[numclass - 1] = parseInt(data[data.length-1]);
  for (var j = numclass; j >= 2; j--) 
  {
    var id = parseInt(mat1[k][j]) - 2;
    kclass[j - 2] = parseInt( data[id]);
    k = parseInt( mat1[k][j] - 1);
  }
  return kclass;
}
function doit()
{
  var data = new Array( 9, 9, 9, 9, 8, 1, 9, 7, 6, 7, 10, 7, 7, 8, 5, 7, 8, 2,
6, 6, 9, 10, 2, 2, 3, 9, 9, 1, 9, 1, 6, 7, 1, 9, 6, 5, 2, 8, 6,
6, 6, 4, 1, 4, 10, 9, 6, 9, 9, 7, 10, 9, 6, 6, 6, 9, 3, 2, 5,
10, 3, 9, 6, 1, 2, 1, 2, 7, 5, 2, 6, 6, 2, 7, 9, 9, 5, 4, 6, 4,
1, 1, 5, 1, 4, 4, 2, 6, 9, 7, 3, 10, 4, 4, 9, 5, 5, 3, 5, 3,
161, 136, 22, 113, 48, 114, 166, 33, 159, 182, 135, 22, 174,
191, 60, 176, 1, 155, 62, 142, 185, 84, 140, 27, 111, 176, 189,
24, 60, 29, 139, 20, 70, 172, 90, 120, 121, 173, 57, 138, 86,
180, 143, 155, 35, 10, 136, 158, 26, 29, 136, 97, 193, 194,
104, 147, 182, 44, 84, 139, 176, 16, 130, 168, 109, 182, 87,
78, 115, 75, 32, 88, 131, 168, 89, 25, 160, 60, 72, 92, 129,
159, 99, 5, 192, 6, 53, 15, 62, 176, 73, 129, 128, 34, 190, 95,
19, 19, 196, 30 );
  var text=document.getElementById("text");
  text.value="";
  var grade = getJenksBreaks(data, 5);
  for (var i = 0; i < grade.length; i++) 
  text.value=text.value+grade[i]+",";
}
window.onload=function()
{
  var bt=document.getElementById("bt");
  bt.onclick=function(){doit()}
}
</script>
</head>
<body >
<button type="button" id="bt">自然分类法</button>
<input id="text">
</body>
</html>

代码描述:JavaScript自然分类算法。JavaScript自然分类算法实例代码分享



109 145



用户评论
大牛,别默默的看了,快登录帮我点评一下吧!:)      登录 | 注册



×
×
51前端

注册

×
绑定手机

请绑定手机号,在继续操作

×
单次下载支付

应付金额:279

支付完成后,回到下载页面,在进行下载

官方QQ群
意见反馈
qq群

扫描上面二维码加微信群

官方QQ群

jQuery/js讨论群
群号:642649996
Css3+Html5讨论群
群号:322131262

加群请备注:从官网了解到