import numpy as np def distance_to_origin(chromosome_results, data=None): # 如果data不为空,则堆叠数据 if data is not None: chromosome_results = np.vstack((chromosome_results, data)) # 获取每个特征的范数 norms = np.linalg.norm(chromosome_results, axis=0) # 检查是否有零值并替换它们,以避免除以零 norms[norms == 0] = 1.0 # 或使用一个非常小的数来替换零 # 归一化处理 normalized_data = chromosome_results / norms # 计算归一化数据到原点的距离 distances = np.linalg.norm(normalized_data, axis=1) # 如果data不为空,则删除最后一行 if data is not None: distances = distances[:-1] return distances