演算法 入門篇(歐式距離)

2021-10-23 02:05:50 字數 2725 閱讀 2507

計算公式

本文將根據使用者輸入特徵的資料模型,對歐式距離的應用進行簡單的介紹。

總思路:根據使用者的歷史登入的輸入特徵,建立 圓形 的資料模型,取落入此圓內的資料,作為正常值,落到圓外部的資料將被判定為風險資料。

public

boolean

doeval

(double[

] inputfeatures, list

]> historyinputfeatures)

//已經足夠2次

/** * 第一步,計算圓心

*///計算出圓心,所有點的同一軸下的座標長度相加/點的數量

double[

] centerofcircle = historyinputfeatures.

stream()

.reduce

((x, y)

->

centerofcircles[i]

+= x[i]

+ y[i];}

return centerofcircles;})

.get()

;//計算最終的圓心結果

for(

int i =

0; i < centerofcircle.length; i++

) system.out.

println

("計算的圓心位置是\t"

+ arrays.

stream

(centerofcircle)

.map

(x->x+"")

.reduce

((v1,v2)

->v1+

","+v2)

.get()

);/** * 第二步,進行半徑的計算,求出所有2點之間的半徑,排序後取2/3的位置作為半徑閾值

*///建立乙個接收所有距離的陣列,長度是 (設歷史點個數為n)(n*n-1)/2

//確定陣列長度

int size =

((historyinputfeatures.

size()

)*(historyinputfeatures.

size()

-1))

/2; list

alldistance =

newarraylist

();for

(int i =

0; i < historyinputfeatures.

size()

; i++)}

//排序,求出2/3位置的長度,作為半徑

alldistance.

sort

((a,b)

->

else})

;//得出半徑

double radius = alldistance.

get(

(alldistance.

size()

*2)/

3); system.out.

println

("計算的半徑是\t"

+radius)

;/**

* 第三步,判斷當前特徵的模型點到圓心的距離是否小於半徑,是就無風險,否則有風險

*///獲取當前的點的距離圓心的長度

double result =

getdistance

(inputfeatures,centerofcircle)

; system.out.

println

("當前的點距離圓心的長度為"

+result)

;return result > radius;

}//提供乙個計算2點之間距離的方法 ∑(xi-yi)^2

private double getdistance

(double[

] point1,double[

] point2)

//最後返回計算結果

return math.

sqrt

(sum)

;}

public

static

void

main

(string[

] args));

latestinputfeatures.

add(

newdouble

);latestinputfeatures.

add(

newdouble

);latestinputfeatures.

add(

newdouble

);latestinputfeatures.

add(

newdouble

);inputfeatureevaluate.

doeval

(new

double

,latestinputfeatures)

;}

演算法 入門篇(球面距離)

數學模型 計算公式 l r arc cos cos wa cos wb cos jb ja sin wa sin wb 補充 球面距離在開發中一般用在,地理位置的位移量計算中。本文將根據風控系統中,使用者登入的位移量評估簡單介紹此演算法的使用。一般的,我們再日誌中,可以獲取客戶端的登入ip,根據ip...

雜湊演算法》入門篇

兩段字串,判斷它們是否相等,樸素解法是乙個乙個的判斷,時間復制度較大。雜湊演算法把字串轉換成整數,這樣時間複雜度從o n 變成了o 1 類似於二進位制,用p進製將字串裝換成整數,為避免重複,一般認為p取131或者1331,使用unsigned long long 就可以,預設對結果模乙個2 64,會...

KMP演算法 入門篇

字串匹配問題 給出乙個源字串和乙個目標字串,能否在源串中找到匹配目標串的子串,找到的話就返回首字母在源串的下標 暴力匹配演算法 bf演算法 相對於烤饃片 kmp 演算法,暴力演算法是最簡單易懂的,就是從前向後遍歷源串的每乙個字母向後檢視以該字母的子串,當且僅當起點字母後面的每個字母都匹配成功則返回該...