代码描述:JavaScript自然分类算法。JavaScript自然分类算法实例代码分享
下面是一段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>
请绑定手机号,在继续操作
注意:只有绑定手机以后,才可使用网站全部功能