javascript自然分类法算法实现代码


Posted in Javascript onOctober 11, 2013
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=7, IE=9, IE=10">
<meta name="viewport"
content="initial-scale=1, maximum-scale=1,user-scalable=no">
<title>自然分类法算法</title>
<script>
function getJenksBreaks(data,numclass) {
function sortNumber(a,b)//在javascript里,Array的sort方法,必须用这个函数,否则不是按数字大小排序
{
return a - b
}
// int numclass;
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();
/* int[] kclass = new int[numclass]; */
kclass[numclass - 1] = parseInt(data[data.length-1]);
/* kclass[numclass - 1] = (Integer) data.get(data.size() - 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 list = new Array();
for(int i = 0; i < data.length; i++){
list.add(data[i]);
} */
//Collections.sort(list);
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]+",";
}
</script>
</head>
<body >
<button type="button"onclick="doit()">自然分类法</button>
<input id="text"></input>
</body>
</html>
Javascript 相关文章推荐
正则表达式中特殊符号及正则表达式的几种方法总结(replace,test,search)
Nov 26 Javascript
jQuery实现可关闭固定于底(顶)部的工具条菜单效果
Nov 06 Javascript
jQuery实现图片上传和裁剪插件Croppie
Nov 29 Javascript
JS实现日期时间动态显示的方法
Dec 07 Javascript
利用node实现一个批量重命名文件的函数
Dec 21 Javascript
vue+webpack实现异步加载三种用法示例详解
Apr 24 Javascript
jQuery使用动画队列自定义动画操作示例
Jun 16 jQuery
重新认识vue之事件阻止冒泡的实现
Aug 02 Javascript
js实现数据导出为EXCEL(支持大量数据导出)
Mar 31 Javascript
微信小程序学习总结(三)条件、模板、文件引用实例分析
Jun 04 Javascript
解决vue组件没显示,没起作用,没报错,但该显示的组件没显示问题
Sep 02 Javascript
JS class语法糖的深入剖析
Jul 07 Javascript
jQuery阻止事件冒泡具体实现
Oct 11 #Javascript
JS定时器实例详细分析
Oct 11 #Javascript
jquery 清空file域示例(兼容个浏览器)
Oct 11 #Javascript
jquery左右滚动焦点图banner图片鼠标经过显示上下页按钮
Oct 11 #Javascript
JAVASCRIPT模式窗口中下载文件无法接收iframe的流
Oct 11 #Javascript
Js base64 加密解密介绍
Oct 11 #Javascript
Jquery EasyUI的添加,修改,删除,查询等基本操作介绍
Oct 11 #Javascript
You might like
php高级编程-函数-郑阿奇
2011/07/04 PHP
php入门学习知识点八 PHP中for循环基本应用之九九乘法口绝表
2011/07/14 PHP
PHP得到某段时间区间的时间戳 php定时任务
2012/04/12 PHP
php数组去重的函数代码
2013/02/03 PHP
PHP高手需要要掌握的知识点
2014/08/21 PHP
laravel 字段格式化 modle 字段类型转换方法
2019/09/30 PHP
Js控制弹窗实现在任意分辨率下居中显示
2013/08/01 Javascript
jquery实现多级下拉菜单的实例代码
2013/10/02 Javascript
纯JavaScript实现获取onclick、onchange等事件的值
2014/12/29 Javascript
jQuery的文档处理程序详解
2016/05/10 Javascript
JS控制div跳转到指定的位置的几种解决方案总结
2016/11/05 Javascript
输入框点击时边框变色效果的实现方法
2016/12/26 Javascript
JavaScript树的深度优先遍历和广度优先遍历算法示例
2018/07/30 Javascript
vue跳转方式(打开新页面)及传参操作示例
2020/01/26 Javascript
[48:18]DOTA2-DPC中国联赛 正赛 RNG vs Dynasty BO3 第二场 1月29日
2021/03/11 DOTA
python分割和拼接字符串
2013/11/01 Python
Python 的 with 语句详解
2014/06/13 Python
Python对小数进行除法运算的正确方法示例
2014/08/25 Python
一篇文章入门Python生态系统(Python新手入门指导)
2015/12/11 Python
老生常谈python函数参数的区别(必看篇)
2017/05/29 Python
python简单商城购物车实例代码
2018/03/15 Python
10个Python小技巧你值得拥有
2018/09/29 Python
pytorch 实现删除tensor中的指定行列
2020/01/13 Python
浅谈tensorflow模型保存为pb的各种姿势
2020/05/25 Python
Python爬虫入门有哪些基础知识点
2020/06/02 Python
如何通过命令行进入python
2020/07/06 Python
python自动化测试三部曲之request+django实现接口测试
2020/10/07 Python
python工具快速为音视频自动生成字幕(使用说明)
2021/01/27 Python
Coggles美国/加拿大:高级国际时装零售商
2018/10/23 全球购物
Ejb技术面试题
2015/04/29 面试题
自我检讨报告
2015/01/28 职场文书
我们的节日元宵节活动总结
2015/02/06 职场文书
离婚被告答辩状
2015/05/22 职场文书
年中了,该如何写好个人述职报告?
2019/07/02 职场文书
会议承办单位欢迎词
2019/07/09 职场文书
Python实现Hash算法
2022/03/18 Python