Mercurial > hg > segmentation
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 |