@@ -16,9 +16,9 @@ def anomalyDetection_example():
16
16
plt .show ()
17
17
'''多元高斯分布函数,并可视化拟合的边界'''
18
18
mu ,sigma2 = estimateGaussian (X ) # 参数估计(求均值和方差)
19
- #print mu,sigma2
19
+ #print ( mu,sigma2)
20
20
p = multivariateGaussian (X ,mu ,sigma2 ) # 多元高斯分布函数
21
- #print p
21
+ #print (p)
22
22
visualizeFit (X ,mu ,sigma2 ) # 显示图像
23
23
24
24
'''选择异常点(在交叉验证CV上训练得到最好的epsilon)'''
@@ -73,7 +73,7 @@ def visualizeFit(X,mu,sigma2):
73
73
plt .plot (X [:,0 ],X [:,1 ],'bx' )
74
74
75
75
if np .sum (np .isinf (Z ).astype (float )) == 0 : # 如果计算的为无穷,就不用画了
76
- # plt.contourf(X1,X2,Z,10.**np.arange(-20, 0, 3),linewidth=.5)
76
+ #plt.contourf(X1,X2,Z,10.**np.arange(-20, 0, 3),linewidth=.5)
77
77
CS = plt .contour (X1 ,X2 ,Z ,10. ** np .arange (- 20 , 0 , 3 ),color = 'black' ,linewidth = .5 ) # 画等高线,Z的值在10.**np.arange(-20, 0, 3)
78
78
#plt.clabel(CS)
79
79
@@ -89,9 +89,9 @@ def selectThreshold(yval,pval):
89
89
'''计算'''
90
90
for epsilon in np .arange (np .min (pval ),np .max (pval ),step ):
91
91
cvPrecision = pval < epsilon
92
- tp = np .sum ((cvPrecision == 1 ) & (yval == 1 )).astype (float ) # sum求和是int型的,需要转为float
93
- fp = np .sum ((cvPrecision == 1 ) & (yval == 0 )).astype (float )
94
- fn = np .sum ((cvPrecision == 1 ) & (yval == 0 )).astype (float )
92
+ tp = np .sum ((cvPrecision == 1 ) & (yval == 1 ). ravel () ).astype (float ) # sum求和是int型的,需要转为float
93
+ fp = np .sum ((cvPrecision == 1 ) & (yval == 0 ). ravel () ).astype (float )
94
+ fn = np .sum ((cvPrecision == 0 ) & (yval == 1 ). ravel ( )).astype (float )
95
95
precision = tp / (tp + fp ) # 精准度
96
96
recision = tp / (tp + fn ) # 召回率
97
97
F1 = (2 * precision * recision )/ (precision + recision ) # F1Score计算公式
0 commit comments