comparison utils/SegUtil.py @ 13:cc8ceb270e79

add some gmm ipynbs
author mitian
date Fri, 05 Jun 2015 18:02:05 +0100
parents c23658e8ae38
children 6dae41887406
comparison
equal deleted inserted replaced
12:c23658e8ae38 13:cc8ceb270e79
276 if sym: 276 if sym:
277 rec = rec * rec.T 277 rec = rec * rec.T
278 278
279 return rec 279 return rec
280 280
281 281 def finiteMax(X):
282 '''Return the smallest finite value in the array'''
283 if not (np.isnan(X).any() or np.isposinf(X).any()):
284 return np.max(X)
285 data = np.sort(np.ndarray.flatten(X))
286 pos = np.where(data == np.inf)[0]
287 fMax = 0
288 return fMax
289
290 def finiteMin(feature):
291 '''Return the smallest finite value in the array'''
292 if not (np.isnan(X).any() or np.isinf(X).any()):
293 return np.min(X)
294 fMin = 0
295 return fMin
296
282 def getMean(feature, winlen, stepsize): 297 def getMean(feature, winlen, stepsize):
283 means = [] 298 means = []
284 steps = int((feature.shape[0] - winlen + stepsize) / stepsize) 299 steps = int((feature.shape[0] - winlen + stepsize) / stepsize)
285 for i in xrange(steps): 300 for i in xrange(steps):
286 means.append(np.mean(feature[i*stepsize:(i*stepsize+winlen), :], axis=0)) 301 means.append(np.mean(feature[i*stepsize:(i*stepsize+winlen), :], axis=0))
334 # print 'resampled', feature_array.shape 349 # print 'resampled', feature_array.shape
335 return feature_array 350 return feature_array
336 351
337 352
338 def normaliseFeature(feature_array): 353 def normaliseFeature(feature_array):
339 '''Normalise features column wisely.''' 354 '''Normalise features column wisely. Ensure numerical stability by adding a small constant.'''
340 feature_array[np.isnan(feature_array)] = 0.0 355 feature_array[np.isnan(feature_array)] = 0.0
341 feature_array[np.isinf(feature_array)] = 0.0 356 feature_array[np.isinf(feature_array)] = 0.0
342 feature_array = (feature_array - np.min(feature_array, axis=-1)[:,np.newaxis]) / (np.max(feature_array, axis=-1) - np.min(feature_array, axis=-1))[:,np.newaxis] 357 feature_array = (feature_array - np.min(feature_array, axis=-1)[:,np.newaxis]) / (np.max(feature_array, axis=-1) - np.min(feature_array, axis=-1) + 0.005)[:,np.newaxis]
343 feature_array[np.isnan(feature_array)] = 0.0 358 feature_array[np.isnan(feature_array)] = 0.0
344 feature_array[np.isinf(feature_array)] = 0.0 359 feature_array[np.isinf(feature_array)] = 0.0
345 360
346 return feature_array 361 return feature_array
347 362
409 peaks.append(sig_env[0]) 424 peaks.append(sig_env[0])
410 for i in xrange(size, len(envelope)-size-1): 425 for i in xrange(size, len(envelope)-size-1):
411 if envelope[i] > np.max(envelope[i-size:i]) and envelope[i] > np.max(envelope[i+1:i+size+1]): 426 if envelope[i] > np.max(envelope[i-size:i]) and envelope[i] > np.max(envelope[i+1:i+size+1]):
412 peaks.append(sig_env[i]) 427 peaks.append(sig_env[i])
413 return peaks 428 return peaks
429
430
431 def deltaFeature(self, feature_array, step=1, axis=-1):
432 '''Return delta of a feature array'''
433 delta = np.zeros_like(feature_array)
434 delta[:, step:] = np.diff(feature_array, axis=axis)
435 return delta
436
437
438 def plotCurve(self, yp, yr, yf, x, labels):
439 '''Plot performance curve.
440 x axis: distance threshold for feature selection; y axis: f measure'''
441
442 f = plt.figure()
443 ax = f.add_axes([0.1, 0.1, 0.7, 0.7])
444 l1, l2, l3 = ax.plot(x, yp, 'rs-', x, yr, 'go-', x, yf, 'k^-')
445 f.legend((l1, l2, l3), ('Precision', 'Recall', 'F-measure'), 'upper left')
446 for i, label in enumerate(labels):
447 ax.annotate(label, (x[i], yf[i]))
448 plt.show()
449 plt.savefig('performance.pdf', format='pdf')
450
451 return None
452