算法-入门篇(欧式距离)

本文介绍了数学中的欧式距离概念,它用于衡量欧几里得空间中两点间的直线距离。在数据分析中,欧式距离常用于计算不同维度数据点间的距离,以分析数据波动和过滤异常值。文章提供了一个简单的应用流程,包括构建几何模型、计算圆心位置、确定半径和判断点是否在圆内。同时,文章包含代码实现部分,辅助理解。
摘要由CSDN通过智能技术生成

概述

在数学中,欧几里得距离欧几里得度量是欧几里得空间中两点间“普通”(即直线)距离。使用这个距离,欧氏空间成为度量空间。
详见 百度百科https://baike.baidu.com/item/%E6%AC%A7%E5%87%A0%E9%87%8C%E5%BE%97%E5%BA%A6%E9%87%8F/1274107?fromtitle=%E6%AC%A7%E5%BC%8F%E8%B7%9D%E7%A6%BB&fromid=2809635&fr=aladdin

计算公式

在这里插入图片描述

使用

  • 欧式距离在数学上,一般用在求任意维度空间的2点之间的距离。
  • 开发中,多用在,判端某些数据的摇摆幅度,并剔除一些差异化较大的数据。例如:风控系统中,用户输入特性的判定上

本文将根据用户输入特征的数据模型,对欧式距离的应用进行简单的介绍。

总思路: 根据用户的历史登录的输入特征,建立 圆形 的数据模型,取落入此圆内的数据,作为正常值,落到圆外部的数据将被判定为风险数据。

  • 建模 :根据历史的输入特性,建立多维度的几何模型。(一般为2~3维)
  • 计算圆心:跟据历史数据的每个轴的对应数据长度,根据公式 一条直线上任意点的距离中点=点与初始点(即 坐标轴心)的长度之和/点个数,计算出圆心的位置。
  • 计算半径: 根据欧式距离公式,计算出各个点之间的距离,按照由小到大排序后,取其大于1/2处的数据作为半径。
  • 计算当前请求的特征点是否落在圆内: 根据欧式距离公式,计算出,圆心到请求点的距离,判断是否落在圆内(即距离是否小于半径)。

代码实现

 public boolean doEval(Double[] inputFeatures, List<Double[]> historyInputFeatures){
   
        //如果特征不足2次,不进行验证
        if(historyInputFeatures.size()<2){
   
            return false;
        }
        //已经足够2次
        /**
         * 第一步,计算圆心
         */

        //计算出圆心,所有点的同一轴下的坐标长度相加/点的数量
        Double[] centerOfCircle = historyInputFeatures.stream().reduce((x, y) -> {
   
            //创建一个double 数组,用于接收圆心数据,数组长度为历史数据的维度
            Double[] centerOfCircles = new Double[historyInputFeatures.get(0).length];
            //获取每个轴下对应数据的总和
            for 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值