Procházet zdrojové kódy

fix:相关系数计算调整,相同值的情况下,需要直接返回1

Roc před 1 rokem
rodič
revize
e748cfcb2c
1 změnil soubory, kde provedl 5 přidání a 0 odebrání
  1. 5 0
      utils/calculate.go

+ 5 - 0
utils/calculate.go

@@ -88,6 +88,11 @@ func ComputeCorrelation(sList []Coordinate) (r float64) {
 		varYDeci = varYDeci.Add(diffYYbarDeci.Mul(diffYYbarDeci))
 		//varY += diffYYbar ** 2
 	}
+	//当输入的两个数组完全相同时,计算相关系数会导致除以零的操作,从而产生 NaN(Not a Number)的结果。为了避免这种情况,可以在计算相关系数之前先进行一个判断,如果两个数组的标准差为零,则相关系数应为1
+	if varXDeci.IsZero() && varYDeci.IsZero() {
+		r = 1
+		return
+	}
 	sqrtVal, _ := varXDeci.Mul(varYDeci).Round(4).Float64()
 	//fmt.Println("sqrtVal:", sqrtVal)
 	sst := math.Sqrt(sqrtVal) // 平方根