首页 > 解决方案 > RuntimeWarning:在 true_divide 距离中遇到的无效值 = 1 - 0.5 * X @ self.X_T / np.linalg.norm(X, axis=1)[:, None] / self.X_T_norm

问题描述

我正在尝试运行 predict_labels:

def test_ensemble_labels(train_data, y, test_data, vector_names, NNeighbours, lower, upper):
    y_pred = []
    for j in range(len(vector_names)):
        y_pred.append(frnn_owa_method(train_data, y, test_data, vector_names[j], NNeighbours[j], lower, upper)[1])
    # Use voting function to obtain the ensembled label - we used mean
    y_pred_res = np.mean(y_pred, axis=0)
    return y_pred_res 

predicted_labels = test_ensemble_labels(data, data['Label'], test_data, ["Vector_d2v"], [19], additive(), additive())

但我收到一条消息:

/content/frnn_owa_eval.py:33: RuntimeWarning: invalid value encountered in true_divide
  distances = 1 - 0.5 * X @ self.X_T / np.linalg.norm(X, axis=1)[:, None] / self.X_T_norm

这是一个包含距离的函数:

def _query(self, X, m_int: int):
            distances = 1 - 0.5 * X @ self.X_T / np.linalg.norm(X, axis=1)[:, None] / self.X_T_norm
            return least_indices_and_values(distances, m_int, axis=-1)

标签: pythonruntime-error

解决方案


您的代码正在尝试执行经典的“除以零”或“除以 NaN”。预处理您的数据集/变量以事先检查这些条件。

如果您不想这样做,可以使用以下方法绕过:

import numpy as np
np.seterr(divide='ignore', invalid='ignore')

推荐阅读