def selectThreshold(yval,pval):
'''???????'''
bestEpsilon = 0.
bestF1 = 0.
F1 = 0.
step = (np.max(pval)-np.min(pval))/1000
'''??'''
for epsilon in np.arange(np.min(pval),np.max(pval),step):
cvPrecision = pval<epsilon
tp = np.sum((cvPrecision == 1) & (yval == 1)).astype(float) # sum???int???????float
fp = np.sum((cvPrecision == 1) & (yval == 0)).astype(float)
fn = np.sum((cvPrecision == 1) & (yval == 0)).astype(float)
precision = tp/(tp+fp) # ???
recision = tp/(tp+fn) # ???
F1 = (2*precision*recision)/(precision+recision) # F1Score????
if F1 > bestF1: # ?????F1 Score
bestF1 = F1
bestEpsilon = epsilon
return bestEpsilon,bestF1
# ???
评论列表
文章目录