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 相关文章推荐
IE6下CSS图片缓存问题解决方法
Dec 09 Javascript
常见效果实现之返回顶部(结合淡入、淡出、减速滚动)
Jan 04 Javascript
jQuery源码解读之removeClass()方法分析
Feb 20 Javascript
jQuery 回调函数(callback)的使用和基础
Feb 26 Javascript
jQuery网页右侧广告跟随滚动代码分享
Apr 20 Javascript
详解Angularjs 如何自定义Img的ng-load 事件
Feb 15 Javascript
jQuery实现简单弹窗遮罩效果
Feb 27 Javascript
AngularJS集合数据遍历显示的实例
Dec 27 Javascript
解决layui富文本编辑器图片上传无法回显的问题
Sep 18 Javascript
Vue使用NProgress的操作过程解析
Oct 10 Javascript
Vue中实现回车键切换焦点的方法
Feb 19 Javascript
基于javascript canvas实现五子棋游戏
Jul 08 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
yii框架源码分析之创建controller代码
2011/06/28 PHP
php通过exif_read_data函数获取图片的exif信息
2015/05/21 PHP
php判断邮箱地址是否存在的方法
2016/02/13 PHP
运用Windows XP附带的Msicuu.exe、Msizap.exe来彻底卸载顽固程序
2007/04/21 Javascript
asp(javascript)全角半角转换代码 dbc2sbc
2009/08/06 Javascript
Javascript事件热键兼容ie|firefox
2010/12/30 Javascript
读jQuery之七 判断点击了鼠标哪个键的代码
2011/06/21 Javascript
时间戳转换为时间 年月日时间的JS函数
2013/08/19 Javascript
javascript实现的一个随机点名功能
2014/08/26 Javascript
上传图片js判断图片尺寸和格式兼容IE
2014/09/01 Javascript
javascript的几种继承方法介绍
2016/03/22 Javascript
Highcharts入门之简介
2016/08/02 Javascript
解决axios发送post请求返回400状态码的问题
2018/08/11 Javascript
React项目动态设置title标题的方法示例
2018/09/26 Javascript
nodejs 使用http进行post或get请求的实例(携带cookie)
2019/01/03 NodeJs
详解小程序循环require之坑
2019/03/08 Javascript
python使用reportlab画图示例(含中文汉字)
2013/12/03 Python
python解析模块(ConfigParser)使用方法
2013/12/10 Python
python执行外部程序的常用方法小结
2015/03/21 Python
Python用UUID库生成唯一ID的方法示例
2016/12/15 Python
python消除序列的重复值并保持顺序不变的实例
2018/11/08 Python
Python3 单行多行万能正则匹配方法
2019/01/07 Python
python画双y轴图像的示例代码
2019/07/07 Python
Tensorflow训练MNIST手写数字识别模型
2020/02/13 Python
Python使用plt.boxplot() 参数绘制箱线图
2020/06/04 Python
CSS3系列之3D制作方法案例
2017/08/14 HTML / CSS
详解通过focusout事件解决IOS键盘收起时界面不归位的问题
2019/07/18 HTML / CSS
美国儿童玩具、装扮和玩偶商店:Magic Cabin
2018/09/02 全球购物
琳达·法罗眼镜英国官网:Linda Farrow英国
2021/01/19 全球购物
工作过失检讨书
2014/02/23 职场文书
企业管理毕业生求职信
2014/03/11 职场文书
计算机相关专业自荐信
2014/07/02 职场文书
文员转正自我鉴定怎么写
2014/09/29 职场文书
2014年化妆品销售工作总结
2014/12/01 职场文书
学术会议邀请函
2015/01/30 职场文书
大学生团支书竞选稿
2015/11/21 职场文书