示例#1
0
 def _calculatePointResiduals(self, curve, tube_radius = None):
   if tube_radius is None:
     X = self._X
   else:
     within_tube_indices = self.calculateCoverageIndices(curve, tube_radius)
     X = self._X.take(list(within_tube_indices), axis = 0) 
     
   if self._maxSegmentLength is None:
     self._maxSegmentLength = self._calculateMaxSegmentLength(curve)
   lpc_points = curve['save_xd']
   num_lpc_points = len(lpc_points)
   tree_lpc_points = KDTree(lpc_points)
   residuals = empty(len(X))
   residuals_lamb = empty(len(X))
   path_length = curve['lamb']
   
   for j, p in enumerate(X): 
     closest_lpc_point = tree_lpc_points.query(p)
     candidate_radius = sqrt(closest_lpc_point[0]**2 + 0.25*self._maxSegmentLength**2)
     candidate_segment_ends = tree_lpc_points.query_ball_point(p, candidate_radius)
     candidate_segment_ends.sort()
     
     current_min_segment_dist = (closest_lpc_point[0],0)
     current_closest_index = closest_lpc_point[1]
     last_index = None
     for i, index in enumerate(candidate_segment_ends):
       if index!=0 and last_index != index - 1:
         prv_segment_dist = self._distancePointToLineSegment(lpc_points[index-1], lpc_points[index], p)
         if prv_segment_dist[0] < current_min_segment_dist[0]:
           current_min_segment_dist = prv_segment_dist
           current_closest_index = index - 1
       if index !=  num_lpc_points - 1:  
         prv_segment_dist = self._distancePointToLineSegment(lpc_points[index], lpc_points[index+1], p)
         if prv_segment_dist[0] < current_min_segment_dist[0]:
           current_min_segment_dist = prv_segment_dist
           current_closest_index = index
       last_index = index
     residuals[j] = current_min_segment_dist[0]
     residuals_lamb[j] = path_length[current_closest_index] + current_min_segment_dist[1]
   lamb_order = argsort(residuals_lamb)
   return (residuals_lamb[lamb_order], residuals[lamb_order])
示例#2
0
 def getPathResidualDiags(self, curve):
   lpc_points = curve['save_xd']
   residuals = self._calculatePrunedPointResiduals(curve)
   #strip inf values from arrays with less than k NNs within radius_threshold
   point_dist = residuals[0]
   point_dist = [point_dist[j][invert(isinf(point_dist[j]))] for j in range(point_dist.shape[0])]
   k = self._params['k']
   num_NN = map(len, point_dist[:k])
   mean_NN = map(mean,point_dist[:k])
   std_NN = map(std, point_dist[:k])
   #indices will contain entries equal to self._X.shape[0], which are out of bounds
   #these are removed with the set symm difference below
   indices = residuals[1]
   num_tree_pts = set([self._X.shape[0]])
   num_lpc_pts = len(lpc_points)
   line_seg_mean_NN = zeros(num_lpc_pts - 1)
   line_seg_std_NN = zeros(num_lpc_pts - 1)
   line_seg_num_NN = zeros(num_lpc_pts - 1)
   
   for i in range(num_lpc_pts - 1):
     trial_points = self._X[list(set(indices[i:i+2].ravel()) - num_tree_pts)]
     if len(trial_points) != 0:
       line_seg_NN_dists = empty(len(trial_points))
       j = 0 
       for p in trial_points:
         line_seg_NN_dists[j] = self._distancePointToLineSegment(lpc_points[i], lpc_points[i+1], p)[0]
         j = j + 1
       line_seg_NN_dists.sort()
       
       line_seg_num_NN[i] = min(len(line_seg_NN_dists), k)
       line_seg_mean_NN[i] = mean(line_seg_NN_dists[:k])
       line_seg_std_NN[i] = std(line_seg_NN_dists[:k])
     else:
       line_seg_num_NN[i] = 0
       line_seg_mean_NN[i] = 0.0
       line_seg_std_NN[i] = 0.0
     
   return {'num_NN': num_NN, 'mean_NN': mean_NN, 'std_NN': std_NN, 
           'line_seg_num_NN': line_seg_num_NN, 'line_seg_mean_NN': line_seg_mean_NN, 'line_seg_std_NN': line_seg_std_NN}
     
示例#3
0
文件: data.py 项目: w20ss11/python_ml
#coning='gbk'

import sys

import numpy
from numpy.ma.core import arange, dot, empty, zeros
from numpy.core.numeric import ones
from numpy.core.fromnumeric import transpose
from numpy.lib.shape_base import column_stack
from numpy.ma.extras import row_stack
import sys
fr=open('D:\eclipse_workspace\Classify\data\data.txt')
macList=['c0:38:96:25:5b:c3','e0:05:c5:ba:80:40','b0:d5:9d:46:a3:9b','42:a5:89:51:c7:dd']
X=empty((4,60),numpy.int8)
for line in fr:
    parts=line.split(',')
    try:
        poi=macList.index(parts[2])
        print('poi',poi)
        if poi!='-1':
            print('try parts[2]:',parts[2])
            lie=int(parts[-1].strip())-1
            X[poi,lie] = parts[1]
    except :
        pass
        #print('haha',parts[2])
    else:
        print('no error')
print("final:",type(list),type(1),type(macList))
print(X)
w=ones((4,1))