当前位置: 首页 > news >正文

简单的asp网站源码第三方小程序开发平台有哪些

简单的asp网站源码,第三方小程序开发平台有哪些,学校网站管理方案,正邦设计招聘一.算法介绍 核密度估计#xff08;Kernel Density Estimation#xff09;是一种用于估计数据分布的非参数统计方法。它可以用于多种目的和应用#xff0c;包括#xff1a; 数据可视化#xff1a;核密度估计可以用来绘制平滑的密度曲线或热力图#xff0c;从而直观地表…一.算法介绍 核密度估计Kernel Density Estimation是一种用于估计数据分布的非参数统计方法。它可以用于多种目的和应用包括 数据可视化核密度估计可以用来绘制平滑的密度曲线或热力图从而直观地表示数据的分布情况。它可以帮助我们观察数据集中的高密度区域、低密度区域以及变化趋势。异常检测通过核密度估计我们可以识别数据中的异常点或离群值。异常点通常表现为低密度区域或与其他数据点明显不同的区域。概率密度计算核密度估计可以用于计算给定数值的概率密度。通过将新数据点带入核密度估计函数可以估计出该点在数据分布中的密度。模式识别核密度估计可以用于识别数据中的模式或聚类。通过观察密度最高的区域可以推断数据的聚类情况或潜在的模式。预测建模核密度估计可以用于构建概率模型进而进行预测。例如在分类问题中可以使用核密度估计来估计每个类别的概率密度然后根据新的数据点所属的密度来进行分类预测。 根据具体的应用需求我们可以灵活地使用核密度估计来分析和理解数据集的特征和结构,可能的用途包括针对社区规划分析房屋密度或犯罪行为或探索道路或公共设施管线如何影响野生动物栖息地。 每个点位可以设置 weight 字段赋予某些要素比其他要素更大的权重该字段还允许使用一个点表示多个观察对象。例如一个地址可以表示一栋六单元的公寓或者在确定总体犯罪率时可赋予某些罪行比其他罪行更大的权重。 二.算法计算原理 本算法以四次核函数为基础四次核函数的特点是具有平滑的曲线形状具有较宽的窗口对数据点的贡献在距离较远时会迅速减小。由于其平滑性和较大的支持范围四次核函数在核密度估计中被广泛使用。 在核密度估计中通过将核函数应用于每个数据点并对所有数据点的贡献进行求和可以计算出在每个位置上的密度估计值。四次核函数的结果可视为在核密度估计中每个位置的密度贡献权重。较大的结果表示该位置的密度较高而较小或接近零的结果表示该位置的密度较低。 本算法中主要利用核密度公式计算空间范围内的核密度值根据核密度值生成 png 或 jpg 格式的热力图或者将整个空间切割成网格用网格中心点参与核密度计算生成 geojson 文件以供进一步空间探索分析。 /*** 计算单个核密度* param radius 半径* param dist 两点的距离* param weight 权重* return*/public static double computeKernel(double radius, double dist, double weight){return (3 / Math.PI) * weight * Math.pow((1 - Math.pow(dist / radius,2)), 2);}创新性说明: 1.算法会自适应数据中的空间点位范围此范围可根据参数bufferSize 设置缓冲区扩展以获取数据范围外的点参与计算。2.根据空间范围每隔特定步长创建虚拟点位或划分网格灵活性较高步长越小则结果在地图分布上的精度越高步长参数step(米) 可选如果没有设置 则默认在空间范围内自适应创建一百万左右虚拟点或网格。3.采用多线程的方式进行核密度计算速度更快。4.可将结果值进行归一化处理核密度计算出来的结果值主要用于观察数据分布但是各个结果值之间相差范围较大不易观察数据分布归一化后能更清晰观察不同区域间的分布情况。5.可根据核密度值的大小根据不同需求生成热力图或 geojson 文件。可在geojson文件上做进一步探索。 三.算法程序 1. 核心流程代码 从csv中获取源数据点信息, 获取坐标范围如果需要缓冲区, 则设置缓冲区 获取步长长度默认一百万个像素点或网格然后根据核密度信息创建图片或geojson // 输入文件路径String inputPath D:\\测试数据.csv;// 输出文件路径String outPath D:\\测试数据.geojson;// String outPath D:\\测试数据.jpg;// 经度字段String lonKey lon;// 纬度字段String latKey lat;// 权重字段String weightKey ;// 影响半径double radius 300.0;// 缓冲区double bufferSize 0.1;// 生成的网格长度(单位: 米)int step 0;int type;if (outPath.endsWith(png) || outPath.endsWith(jpg)){type 0;}else if (outPath.endsWith(geojson)){type 1;}else {throw new RuntimeException(输出文件格式只能是 png、jpg 或者 geojson);}// 从csv中获取源数据点信息ListEntryPoint entryPoints EntryPoint.formatToEntryPoints(inputPath, lonKey, latKey, weightKey, radius);// 获取坐标范围double[] coordsScope KernelUtils.getCoordsScope(entryPoints);// 如果需要缓冲区, 则设置缓冲区if (bufferSize ! 0){coordsScope KernelUtils.getBufferScope(coordsScope[0], coordsScope[1], coordsScope[2], coordsScope[3], bufferSize);}// 获取默认的步长长度, 默认一百万个像素点或网格if (step 0){step KernelUtils.getDefaultSize(coordsScope);}// 根据核密度信息创建图片或geojsonkernel(coordsScope, entryPoints, step, radius, type, outPath);/*** 核密度方法* param coordsScope 坐标范围* param entryPoints 从csv中获取源数据点信息* param step 步长长度* param radius 影响半径* param type 输出文件类型*/public static void kernel(double[] coordsScope, ListEntryPoint entryPoints, int step, double radius, int type, String path){// 获取网格坐标系的lon, lat的列表ListDouble[] coords KernelUtils.getKennelPointCoords(coordsScope[0], coordsScope[1],coordsScope[2],coordsScope[3], step);Progress.progress( progress);int width coords.get(0).length;int high coords.get(1).length;if (type 1){// 生产 geojson 网格结果generatorGridGeojson(coords, entryPoints, width-1, high-1, radius, path, step);}else {// 生产热力图图片generatorThermalMap(coords, entryPoints, width, high, radius, path, step);}}2.创建面的 geojson 文件 /*** 根据核密度信息创建面的 geojson 文件* param coords 虚拟数据点经纬度列表* param entryPoints 数据点* param width 横向点位数量* param high 纵向点位数量* param radius 影响半径*/public static void generatorGridGeojson(ListDouble[] coords, ListEntryPoint entryPoints,int width, int high, double radius, String path, int step){// 获取所有中心点位的数据ListPixelPoint pixelPoints KernelUtils.getGridCenters(coords);// 进行核密度计算, 并记录受到影响的网格信息KernelResult kernelResult kernelCompute(entryPoints, pixelPoints, width, high, radius);Double[][] matrix kernelResult.getMatrix();Double max kernelResult.getMax();Double min kernelResult.getMin();// 生产面的 geojson 文件writeToFile(KernelUtils.jointGridGeojson(matrix, max, min, coords), path);System.out.println(String.format(计算完成, 生成 geojson 文件, 参与计算网格 %d 个, 受影响网格 %d 个, 相邻网格间距 %s 米,pixelPoints.size(), KernelUtils.effectiveGrid, step));}3.热力图图片 /*** 根据核密度信息创建热力图图片* param coords 虚拟数据点经纬度列表* param entryPoints 数据点* param width 横向点位数量* param high 纵向点位数量* param radius 影响半径*/public static void generatorThermalMap(ListDouble[] coords, ListEntryPoint entryPoints,int width, int high, double radius, String path, int step){// 获得所有点位ListPixelPoint pixelPoints KernelUtils.spliceKennelPoints(coords);// 进行核密度计算, 并记录受到影响的网格信息KernelResult kernelResult kernelCompute(entryPoints, pixelPoints, width, high, radius);Double[][] matrix kernelResult.getMatrix();Double max kernelResult.getMax();Double min kernelResult.getMin();// 生产热力图ImageGenerator.generatorImage(matrix, max, min, path);System.out.println(String.format(计算完成, 生成图片 像素: %d x %d, 相邻像素点实际代表距离 %s 米, width, high, step));}4.计算所有点位的核密度 /*** 计算所有点位的核密度* param entryPoints 数据点信息* param pixelPoints 创建的虚拟像素点* param radius 影响半径* return*/public static KernelResult kernelCompute(ListEntryPoint entryPoints, ListPixelPoint pixelPoints, int width, int high, double radius){ListDouble values new ArrayList();double affectLat KernelUtils.getLatDist(radius);// 记录受到影响的网格Double[][] matrix new Double[high][width];// 建立线程池ThreadPoolExecutor threadPool new ThreadPoolExecutor(30, 30, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue(Integer.MAX_VALUE));// 线程等待计数器CountDownLatch countDownLatch new CountDownLatch(pixelPoints.size());// 创建锁, 使计算数据具有线程间可见性Lock lock new ReentrantLock();int stepPosition pixelPoints.size() / 75;for (int i 0; i pixelPoints.size(); i){PixelPoint pixelPoint pixelPoints.get(i);Double kennelLon pixelPoint.getLon();Double kennelLat pixelPoint.getLat();threadPool.execute(() - {// 开始计算每个网格受到其他所有点所影响的核密度double kernel 0.0;for (int j 0; j entryPoints.size(); j){EntryPoint entryPoint entryPoints.get(j);double lon entryPoint.getLon();double lat entryPoint.getLat();if (Math.abs(lon - kennelLon) entryPoint.getAffectLon() || Math.abs(lat - kennelLat) affectLat){continue;}// 获取权重, 默认为 1.0double weight 1.0;if (entryPoint.getWeight() ! null){weight entryPoint.getWeight();}// 计算网格中心点与源数据点的距离double distance KernelUtils.getDistance(lon, lat, kennelLon, kennelLat);// 影响半径大于距离的点直接去掉if (distance radius){// 计算每个网格所受影响的核密度kernel computeKernel(radius, distance, weight);}}lock.lock();// 为中心点实体类赋予核密度的值Double value 1 / Math.pow(radius, 2) * kernel;matrix[pixelPoint.getI()][pixelPoint.getJ()] value;values.add(value);lock.unlock();countDownLatch.countDown();if (countDownLatch.getCount() % stepPosition 0 progress 80){Progress.progress(progress);}});}// 等待所有任务执行完毕try {countDownLatch.await();} catch (InterruptedException e) {throw new RuntimeException(e);}// 关闭线程池threadPool.shutdown();return new KernelResult(matrix, Collections.max(values), Collections.min(values));}5.可执行 jar 包 该程序可打为可执行jar包, 文件夹中的: kernel.jar 运行环境: jdk 1.8 执行示例: java -jar kernel.jar 杭州市超市营业额.csv 杭州市超市营业额热力.jpg 经度 纬度 利润 2000.0 0.1 0 java -jar kernel.jar 杭州市超市营业额.csv 杭州市超市营业额分布.geojson 经度 纬度 利润 2000.0 0.1 0 java -jar kernel.jar 测试数据.csv 测试数据.jpg lon lat 300.0 0.1 0 java -jar kernel.jar 测试数据.csv 测试数据.geojson lon lat 300.0 0.1 0参数参数位置参数说明inputPath1输入的csv文件路径outPath2输出的文件路径程序根据文件后缀选择生产的文件类型只允许 jpg、png、geojson 三种文件。lonKey3输入文件中的经度字段名latKey4输入文件中的纬度字段名weightKey5输入文件中的权重字段名没有则输入””radius6影响半径单位米影响半径越长周围空间受该数据的影响越广需根据不同的输入数据情况调整bufferSize7空间缓冲区可扩大数据空间范围一般0.1即可即扩大 10% 的区域step8空间划分步长步长越小则参与计算的空间点数据越多计算量越大结果数据越精确 需根据不同的输入数据情况调整当值为0时程序则适配生成一百万个点或网格参与计算注尽量不要在城市级别范围设置过低步长 四.执行结果展示 热力图示例: 平台分析示例: 杭州市超市营业额区域性分析-热力图: 杭州市超市营业额区域性分析-平台分析: 五、应用场景 金融风险评估核密度算法可以用于评估某种投资方式的风险程度。将历史数据输入核密度估计器中可以得出该投资方式在不同风险水平下的收益概率密度分布。这有助于金融机构更好地了解风险和收益之间的平衡。 生态学核密度算法可用于研究动植物的栖息地和迁徙模式。将动植物的观察数据输入核密度估计器中可以得出它们在不同地点出现的概率密度分布帮助科学家更好地了解动植物的栖息地范围和活动规律。 交通流量预测核密度算法可以用于预测道路上的交通流量。将历史交通流量数据输入核密度估计器中可以得出在不同时间段内和不同位置上的交通流量概率密度分布。这有助于交通管理人员更好地规划道路、优化路线和管理交通拥堵。 模式识别核密度算法可以使用于人脸识别、图像处理等领域。将输入数据的特征值输入核密度估计器中可以得出不同特征值下相应数据的概率密度分布。这可用于识别图像中不同物体的特征值例如人脸的轮廓和眼睛的位置从而实现自动化识别。
http://www.hkea.cn/news/14411157/

相关文章:

  • 公司网站设计与实现的英文文献石家庄网页设计的公司
  • 四川网站推广优化谷歌浏览器下载手机版安卓
  • 深圳市seo网站设计长沙互联网公司招聘
  • 个人网站制作模板主页怎么做网站的站点地图
  • 手机如何建设网站首页苏州公司排名
  • 网站建设著作权中国公关公司前十名
  • 晋中做网站的公司网站建设工作进度计划表
  • wordpress 淘宝客网站国内最新十大新闻
  • 南宁网站建设公刷手机网站关键词
  • 网站开发开题报告范文网站建设收费标准公司
  • 帝国网站模板建设canvas网站在线设计神器
  • 网站模板怎么改湖南长沙房价2022最新价格
  • 乐清 网站建设幻影图片一键制作网站
  • 专做商品折扣的网站扬中营销网站建设
  • 做下载网站赚钱吗加强网络暴力治理
  • 仿微博网站模板七台河新闻直播
  • 网站建设的实验原理和方法定制网站建设开发维护
  • 免费公司网站制作手机软件开发培训学校
  • 用凡科做网站要钱吗免费申请邮箱
  • 做韩国网站本wordpress慢
  • 做企业网站需要什么条件旅游网站规划设计与建设
  • 网站的链接要怎么做长沙网站制作首页
  • 运动鞋子网站建设规划书济南哪家做网站
  • 大学路网站建设wordpress 文章 数据库
  • 域名访问网站的知识电子商务公司经营范围有哪些
  • 英国做电商网站公众号绑定网站教程
  • 如何自己做网站一年赚一亿jsp网站开发的环境配置过程
  • 做网站什么内容中国建设服务信息网站
  • 鹰潭律师网站建设网站域名费用交给谁
  • 怎么做淘宝联盟网站推广山西响应式网站设计