当前位置: 首页 > 编程日记 > 正文

有关任意多条曲线的拟合度算法

为什么80%的码农都做不了架构师?>>>   hot3.png

在股市中,经常会遇到趋势的预判。所谓趋势,即相对而言的规律化的模式识别形态。形象来讲,就是个股的一段时间内的曲线分布状况。

那么,问题来了。

我们虽然可以在少量的图像中分辨出差异不是很大的趋势之间的相似度。如果,在进行量化交易的时候,进行程序化的批量匹配过程中,该如何分辨出相似度最高的曲线标的呢?这就需要程序化算法进行匹配。

jiagequ.png

对于曲线而言,无非就是一系列的坐标点的连线。在对相邻坐标点的倾斜角进行递归计算,就可以合计出曲线的倾斜角分布积,就代表了曲线的形态。那么,又如何进行批量的匹配呢?需要进行倾斜角分布积的归一化,常规的线性函数在对于无量纲的区间进行归一处理的无奈。该如何处理呢?其实可以转换思路,对每一组倾斜角进行差额计算,由于 180° < 相邻坐标点倾斜角区间 > 0°,那么进行了倾斜角分布积差以后,就转入了常规的线性函数的归一化处理范围。


package com.mms.tools; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /**  * 趋势线拟合度算法  * ww  */ public class Trend { /* 任意两点间直线的倾斜角算法 */ public static void main(String[] args) throws Exception { //基准坐标系         List<Map<String,Double>> ls = new ArrayList<Map<String,Double>>();         Map<String,Double> m = new HashMap<String,Double>();                  String strs = "";         m = new HashMap<String,Double>();         m.put("x", 1.0);m.put("y", 1.0);         ls.add(m);                  m = new HashMap<String,Double>();         m.put("x", 2.0);m.put("y", 2.0);         ls.add(m);                  m = new HashMap<String,Double>();         m.put("x", 3.0);m.put("y", 3.0);         ls.add(m);                  m = new HashMap<String,Double>();         m.put("x", 4.0);m.put("y", 4.0);         ls.add(m);                  m = new HashMap<String,Double>();         m.put("x", 5.0);m.put("y", 5.0);         ls.add(m);                  m = new HashMap<String,Double>();         m.put("x", 6.0);m.put("y", 6.0);         ls.add(m);                  m = new HashMap<String,Double>();         m.put("x", 7.0);m.put("y", 7.0);         ls.add(m);                  m = new HashMap<String,Double>();         m.put("x", 8.0);m.put("y", 8.0);         ls.add(m);                  m = new HashMap<String,Double>();         m.put("x", 9.0);m.put("y", 9.0);         ls.add(m);                  m = new HashMap<String,Double>();         m.put("x", 10.0);m.put("y", 9.0);         ls.add(m);                //坐标系斜率归一化         List<Double> lvs = getLvs(ls);         if(lvs != null && lvs.size() >0){          //匹配坐标系          List<Map<String,Double>> lss = new ArrayList<Map<String,Double>>();          for(int i=0;i<10;i++){          m = new HashMap<String,Double>();                 m.put("x", (double)(i+1));m.put("y",(double)GetIntMathNumber(1,9));                 lss.add(m);          }                   double guis = getGuis(lss,lvs);          //System.out.println("两条坐标系曲线拟合(值越小越拟合): "+guis);         }          } /*  * 根据坐标系计算出相邻坐标的斜率集  */ public static List<Double> getLvs(List<Map<String,Double>> ls){ List<Double> lvs = new ArrayList<Double>();         //排序         if(ls != null && ls.size() >0){          //System.out.println("基准坐标系,斜率集核算");          for(int i=0;i<ls.size();i++){          if(i >0 && i<ls.size()){          lvs.add(getGuiLv(ls.get(i-1).get("x"),ls.get(i-1).get("y"),ls.get(i).get("x"),ls.get(i).get("y"),0));          //System.out.println(i+" | "+ls.get(i-1).get("y")+" | "+ls.get(i).get("y")+" |基准斜率 "+getGuiLv(ls.get(i-1).get("x"),ls.get(i-1).get("y"),ls.get(i).get("x"),ls.get(i).get("y"),0));          }          }          //System.out.println("");         } return lvs; } /*  * 根据坐标系计算出相邻坐标的斜率集,相对于基准的权重值(聚合权重)  */ public static double getGuis(List<Map<String,Double>> ls,List<Double> lvs){ double guis = 0;         //排序         if(ls != null && ls.size() >0){          //System.out.println("匹配坐标系,斜率集核算匹配");          for(int i=0;i<ls.size();i++){          if(i >0 && i<ls.size()){          guis += getGuiLv(ls.get(i-1).get("x"),ls.get(i-1).get("y"),ls.get(i).get("x"),ls.get(i).get("y"),lvs.get(i-1));          //System.out.println(i+" | "+ls.get(i-1).get("y")+" | "+ls.get(i).get("y")+" |基准斜率 "+lvs.get(i-1)+" |匹配归一权重 "+getGuiLv(ls.get(i-1).get("x"),ls.get(i-1).get("y"),ls.get(i).get("x"),ls.get(i).get("y"),lvs.get(i-1)));          }          }          //System.out.println("");         } return guis; } /*  * 根据任意两点坐标斜率,比较基准,并进行离差归一化权重计算(可计算斜率,也可计算权重)  */ public static double getGuiLv(double x1,double y1,double x2,double y2,double atan){ double i = 0; //任意两点间直线的倾斜角 double x = Math.atan2(x2-x1,y2-y1)*180/Math.PI; if(atan == 0){ i = x; }else{ //线性归一化函数转换(离差) 归一化:(x-min)/(max-min); double y = x-atan;if(y <0){y = -y;} //离差权重         i = (y-0)/(x-0); }         return i; } /*  * 从startNumber到endNumber的随机整数  */       public static int GetIntMathNumber(int startNumber,int endNumber){          return (int)Math.round(Math.random()*(endNumber-startNumber)+startNumber);     }  }


此处给出java的算法代码,如下是进行了图形化结果。

jlrqu.png


转载于:https://my.oschina.net/matol/blog/481401

相关文章:

从深度学习到深度森林方法(Python)

作者 |泳鱼来源 |算法进阶一、深度森林的介绍 目前深度神经网络&#xff08;DNN&#xff09;做得好的几乎都是涉及图像视频&#xff08;CV&#xff09;、自然语言处理&#xff08;NLP&#xff09;等的任务&#xff0c;都是典型的数值建模任务&#xff08;在表格数据tabular dat…

LHC大神问的矩阵转置问题

数学中线性代数中提到的矩阵转置&#xff0c;其实在我们的业务场景中也有需要的地方&#xff0c;比如LHC大神问到的这个问题 那么如何进行行列转换呢&#xff1f; 代码如下&#xff1a; <?php$arrayarray(部门1>array(费用1>100,费用2>200,费用3>300),部门2>…

不同机器互相调用WebService或者HTTP一定要telnet 测试

ping的通不一定就telnet的通 一定要#telnet 目标机器IP 目标机器端口如果一直是 Trying 目标IP那么不通如果是 Trying 目标IP Connection to 目标IP 说明通的

亮相百度WAVE SUMMIT+2021,Intel OpenVINO带来新气象

北京时间12月12日&#xff0c;百度WAVE SUMMIT2021深度学习开发者峰会在上海举办。这场属于AI的科技盛会之上&#xff0c;英特尔OpenVINO联手百度PaddlePaddle为开发者带来了一系列的技术内容&#xff0c;为开源生态构建持续合作&#xff0c;为产业进步提供新的动力。 OpenVIN…

精品德国软件 UltraShredder 文件粉碎机

出自德国的文件粉碎机&#xff0c;整合了回收站的相关操作&#xff0c;特点是兼容性好&#xff0c;支持9X以上的Win全系列&#xff08;不包括64位系统哦&#xff09;。该软件绿色免费&#xff0c;建议收藏于U盘^_^ 它和偶之前汉化的加密软件Omziff一样&#xff0c;来自XTort&am…

JavaEE 银联支付之手机控件支付-消费类交易

0. workflow app端request->后台封装参数->后台进行签名->请求银联平台->解析响应->响应需求信息 复制代码1. acp_sdk.properties ##############SDK配置文件&#xff08;证书方式签名&#xff09;################ # 说明&#xff1a; # 1. 使用时请删除后缀的…

php singleton()

common.php <?phpclass CC{private static $ins;public static function singleton(){if (!isset(self::$ins)){$c __CLASS__;self::$ins new $c;}return self::$ins;}public function EventResult($Id){return $Id;}}?>index.php <html><head><title…

2015 Multi-University Training Contest 2 1002 Buildings

Buildings Problems Link: http://acm.hdu.edu.cn/showproblem.php?pid5301 Mean: n*m列的网格&#xff0c;删除一个格子x,y&#xff0c;用矩形来填充矩阵。且矩形至少有一边是在矩阵的边缘上。 要使最大矩形的面积最小&#xff0c;求满足条件的矩形填充方式中面积最大的…

Meta 发布 Bean Machine 帮助衡量 AI 模型的不确定性

编译 | 禾木木 出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09; Meta 近日宣布发布 Bean Machine&#xff0c;这是一种概率编程系统&#xff0c;表面上可以更轻松地表示和了解 AI 模型中的不确定性。 在早期测试版中&#xff0c;Bean Machine 可用于通过自动的“不确…

【跃迁之路】【425天】刻意练习系列184—SQL(2018.04.06)

(跃迁之路)专栏 叨叨两句 技术的精进不能只是简单的刷题&#xff0c;而应该是不断的“刻意”练习该系列改版后正式纳入【跃迁之路】专栏&#xff0c;持续更新刻意练习——MySQL 2018.04.02 题目描述 DROP TABLE IF EXISTS test1;CREATE TABLE test1 (id int(11) NOT NULL AUTO_…

安利一个超好用的 Pandas 数据挖掘分析神器

作者 |欣一来源 |Python爱好者集中营今天小编继续来给大家介绍一款用于做EDA(探索性数据分析)的利器&#xff0c;并且可以自动生成代码&#xff0c;帮助大家极大节省工作时间与提升工作效率的利器&#xff0c;叫做Bamboolib。大家可以将其理解为是Pandas的GUI扩展工具&#xff…

PHP魔术常量

PHP 向它运行的任何脚本提供了大量的预定义常量。不过很多常量都是由不同的扩展库定义的&#xff0c;只有在加载了这些扩展库时才会出现&#xff0c;或者动态加载后&#xff0c;或者在编译时已经包括进去了。 有七个魔术常量它们的值随着它们在代码中的位置改变而改变。例如 _…

vim 打开Linux下文件每一行后面都有^M的样式

由于服务器不是我一个人在操作&#xff0c;在修改apache配置文件时发现了一个很奇怪的问题&#xff0c;vim编辑打开配置文件发现后面都有一个^M的标记 虽然不会影响服务的运行&#xff0c;但总感觉不对劲&#xff0c;所以在此我尝试用替换的方式来设置它 :%s/\^M//g 虽然也成功…

所有类是object的子类,但是又可以继承一个其他类解析

所有类的祖宗是object&#xff0c;所有类只能有一个父亲。Java的单继承指的是一个类不能有多个父亲&#xff0c;而C就能有好多父亲。举个例子&#xff1a;如果A 没有继承任何类&#xff0c;那他的类层次关系默认是 A -- Object如果A 继承了类B&#xff0c;那他的类层次关系变为…

Smarty中文手册,Smarty教程,Smarty模板的入门教材

Smarty中文手册,Smarty教程,Smarty模板的入门教材首先&#xff0c;这份Smarty中文手册的翻译工作是由喜悦国际村村民自发组织的&#xff0c;不代表任何人的意见和观点。对他们的无私奉献精神&#xff0c;我们表示感谢&#xff0c;他们为Smarty模板的普及作出了重大的贡献&#…

380万播放量,也许是全网最火的机器学习视频

“秋名山上行人稀&#xff0c;常有车手较高低。如今无人车当道&#xff0c;全是 AI 老司机。”且问 AI 老司机表现如何&#xff1f;可灵活转弯&#xff0c;控速自如&#xff1a;可行云流水&#xff0c;沿最优路线过弯&#xff1a;更可多次打圈&#xff0c;绕多少下也不在话下&a…

《SQL Server 管理与维护指南》章节目录

http://www.mssqlmct.cn/?post2转载于:https://blog.51cto.com/mssqlmct/1677763

Java并发之synchronized

synchronized关键字最主要有以下3种应用方式 修饰实例方法&#xff0c;作用于当前实例加锁&#xff0c;进入同步代码前要获得当前实例的锁&#xff1b;实例锁&#xff0c;一个实例一把锁 修饰静态方法&#xff0c;作用于当前类对象加锁&#xff0c;进入同步代码前要获得当前类对…

java 产生的固体物的基础上 增删改的SQL声明

经过多次修改。最后版本。package com.power.sql;import java.lang.reflect.Field; import java.lang.reflect.Modifier; import java.util.List; import java.util.Vector;import org.apache.commons.lang3.reflect.FieldUtils; /*** author Gary Huang* 博客地址&#xff1a;…

顺络新能源汽车技术研讨会圆满落幕

2021年12月11日&#xff0c;由深圳顺络电子股份有限公司主办、中国传感器与物联网产业联盟和大湾区新能源汽车产业技术创新联盟协办的新能源汽车技术研讨会在深圳汉普斯酒店隆重召开&#xff0c;广汽研究院智能网联中心总师廖磊先生、比亚迪汽车工程研究院副总工程师顾建军先生…

电信的 DNS 服务器地址

上海电信 202.96.209.5202.96.209.6202.96.209.133202.96.209.134

系统利益相关者描述案例

利益相关者 主要目标 态度 主要关注点 约束条件 厅长 监督河北省创新事业的发展 强烈支持积极推动河北省科技创新平台的建立&#xff0c;促进河北省科技创新事业的发展 如何优化管理&#xff0c;如何保证推动创新发展事业工作的高效性 无 平台主任&#xff08;院长…

CentOS6怎么样设置ADSL上网

首先安装好CentOS6以后要安装rp-pppoe这个软件&#xff0c;centos之前的版本所adsl-setup这个命令安装&#xff0c;到centos6改了。 需要光驱内放好CentOS安装盘 挂载光盘 #mount /dev/cdrom /media 找出文件路径 # find /media -name rp-pppoe* 这个文件没有依赖项&#xff0c…

小冰数字孪生主播正式上线 全球首创全流程无人化AI直播

12月20日&#xff0c;小冰公司公布全新的数字孪生虚拟人技术&#xff0c;并联合每日经济新闻&#xff0c;将首批应用该技术的虚拟主持人&#xff0c;与“每经AI电视”一同正式上线。与其他技术相比&#xff0c;小冰框架不仅将虚拟人的整体自然度提升至与真人难以分辨的程度&…

二分搜索 POJ 2456 Aggressive cows

题目传送门 1 /*2 二分搜索&#xff1a;搜索安排最近牛的距离不小于d 3 */4 #include <cstdio>5 #include <algorithm>6 #include <cmath>7 using namespace std;8 9 const int MAXN 1e5 10; 10 const int INF 0x3f3f3f3f; 11 int x[MAXN]; 12 int n,…

路由策略与策略路由的区别。

这两中方案都是为了控制网络流量的可达性或调整网络流量的路径&#xff1a; 一、路由策略。&#xff08;Route-Policy&#xff09;路由策略是通过修改路由表的路由条目来控制数据流量的可达性。即对接受和发布的路由进过滤。这种方式称为路由策略。 二、策略路由。&#xff08;…

Python 刷英语六级段落匹配仅需 3 秒?

作者 | 叶庭云来源 | AI庭云君一、前言 一年二度的四六级考试就此落下帷幕&#xff0c;本次考试体验感极强&#xff0c;反手就是一个 "五星好评"本文利用 Python 的模糊匹配方法来刷英语六级段落匹配&#xff0c;仅需要3秒&#xff01;Python的 FuzzyWuzzy 库&#x…

在自己的网站添加关注新浪关注按钮

有2种方法 第一种是参照新浪开发平台的API 地址如下&#xff1a; http://open.weibo.com/widget/followbutton.php 第二种是在html页面引入一段js <iframe allowtransparency"" border"0" frameborder"0" height"22" marginheight…

pandas中DataFrame的ix,loc,iloc索引方式的异同

pandas中DataFrame的ix&#xff0c;loc&#xff0c;iloc索引方式的异同 1、loc: 按照标签索引&#xff0c;范围包括start和end 2、iloc&#xff1a; 在位置上进行索引&#xff0c;不包括end 3、ix: 先在index上索引&#xff0c;索引不到就在index的位置上进行索引(如果index非全…

Linux crontab 命令格式

基本格式 :*  *  *  *  *  command分 时 日 月 周 命令 第1列表示分钟1&#xff5e;59 每分钟用*或者 */1表示第2列表示小时1&#xff5e;23&#xff08;0表示0点&#xff09;第3列表示日期1&#xff5e;31第4列表示月份1&#xff5e;12第5列标识号星期0&#x…