首页 > 编程知识 正文

用欧式距离计算样品距离,距离的公式

时间:2023-05-05 00:58:38 阅读:137356 作者:1330

在数学中,大方的豆芽距离或大方的豆芽度量是大方的豆芽空间中两点之间的“普通”,也就是直线)的距离。 使用该距离,欧几里得空间成为测量空间。

3358 www.Sina.com/: https://baike.Baidu.com/item /欧几里得度量/1274107? fromtitle=欧式距离fromid=2809635fr=aladdin

计算公式

使用欧式距离在数学上一般用于求任意维空间的两点之间的距离。 在开发中,经常使用判断特定数据的波动幅度,消除差别较大的数据。 例如,详见 百度百科本文基于用户输入特征的数据模型,简要介绍了欧式距离的应用。

http://www.Sina.com/http://www.Sina.com /

风控系统中,用户输入特性的判定上根据历史输入特性,建立多维几何模型。 (一般为2~3维) 总思路:)根据历史数据各轴的对应数据长度,根据公式直线上任意点的距离中点=点和初始点,即坐标轴心(的长度之和/点的个数计算出圆心的位置。 根据用户的历史登录的输入特征,建立 圆形 的数据模型,取落入此圆内的数据,作为正常值,落到圆外部的数据将被判定为风险数据。)根据欧式距离公式,计算各点之间的距离,按从小到大排序后,以大于1/2处的数据为半径。 (3358www.Sina.com/)根据欧式距离公式,计算圆心到要求点的距离,判断是否在圆内,即距离是否小于半径。

代码实现publicbooleandoeval (double [ ] input features, list double [ ] historyinputfeatures /特征小于2次时,不进行验证if ) historyinputfeatures/(/) ) **第一步,圆心(//) centerofcircle=historyinputfeatures.stream (用于接收. red deam圆中心的数据。 数组的长度为历史数据的维double [ ] centerofcircles=new double [ historyinputfeatures.get (0).length]; //在各轴取得对应数据的总和for (inti=0; Ihistoryinputfeatures.get(0).length; I ) if (centerofcircles [ I ]==空) { centerOfCircles[i]=0.0; } centerOfCircles[i] =x[i] y[i]; } return centerOfCircles; ()、get ); //计算最终圆的中心的结果for(intI=0; i centerOfCircle.length; I ) { centerofcircle [ I ]=centerofcircle [ I ]/historyinputfeatures.size (; } System.out.println ('计算的中心位置为(t'arrays.stream(centerofcircle ).map (x-x '.reduce ) ) V1,v2 ) v1 ' v1。 排序后,将2/3的位置作为半径阈值*///,创建接收所有距离的数组。 长度为(历史点数为n*n-1 )/2 //(确定序列长度intsize=) ) ) historyinnning listdoublealldistance=newarraylistdouble (; for(intI=0; i historyInputFeatures.size (; I ()//每次取一个历史数据点,与其他数据进行距离计算for(intj=I1; j historyInputFeatures.size (; j )//计算每两点的距离,并在集合中添加all distance.add (get distance (historyinputfeatures.get (j (I ),historyinputfeatures.get ) j }else{ return ab? 1:-1; }; ); //半径double radius=all distance.get ((all distance.size ) * 2)/3 ) ); System.out.println ('计算出的半径为t' radius ); /**第三步,判断当前特征模型点到圆心的距离是否小于半径,否则无风险。 否则,存在风险*///当前点距离圆心的长度double result=get distance (input features,centerOfCircle ); System.out.println ('距离当前点中心的长度为' result ' ); 返回结果radius;//计算两点之间距离的方法(Xi-yi ) )2privatedoublegetdistance (double [ ] point 1,Double[] point2) ) /为接收创建变量,每次合计后的值i point1.length; I ) sum=math.pow (point1[ I ]-point2[ I ],2 ); //最后返回计算结果returnmath.sqrt(sum ); } publicstaticvoidmain (string [ ] args ) inputfeatureevaluateinputfeatureevaluate=newinputfeatureeevaluate; ArrayList double [ ] latestinputfeatures=new ArrayList (; latestinputfeatures.add (new double [ ] (1000.0,1100.0,1800.0 ) ); latestinputfeatures.add (new double [ ] (1100.0,1120.0,1750.0 ) ); latestinputfeatures.add (new double [ ] { 950.0,1250.0,2000.0 } ); latestinputfeatures.add (new double [ ] (1200.0,1050.0,1900.0 ) ); latestinputfeatures.add (new double [ ] (1400.0,800.0,2500.0 ) ); inputfeatureevaluate.do eval (new double [ ] { 1100.0,1000.0,1750.0 },latestInputFeatures ); }

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。