Source code for ensemblem.weights_functions

from .metrics import *


[docs]def w_inverse_LMAE(actual, predicted): """ Inverse Local MAE :param actual: actual values :param predicted: predicted values """ return 1 / mean_absolute_error(actual, predicted)
[docs]def w_inverse_log_LMAE(actual, predicted): """ Inverse Log Local MAE :param actual: actual values :param predicted: predicted values :return: inverse log local MAE """ return np.log(max(abs(actual - predicted)) / mean_absolute_error(actual, predicted))
[docs]def get_k_nearest_neighbors(point, data, k, metric): """ Get the k nearest neighbors of a point in a dataset :param point: point to calculate the distance :param data: data to calculate the distance :param k: number of neighbors :param metric: distance metric """ distances = metric(point, data) return distances.argsort()[:k]
[docs]def get_k_nearest_neighbors_weights(point, data, k, metric, weights): """ Get the k nearest neighbors of a point in a dataset weighing the neighbors. Parameters: point, data, k, metric, weights :param point: point to calculate the distance :param data: data to calculate the distance :param k: number of neighbors :param metric: distance metric :param weights: weights of the neighbors :return: k nearest neighbors """ distances = metric(point, data) return distances.argsort()[:k], weights(distances)
[docs]def predict_inverse_LMAE(point, data, k, metric): """ Predict the target value of a point using the inverse LMAE """ neighbors = get_k_nearest_neighbors(point, data, k, metric) return np.average(data[neighbors], axis=0, weights=w_inverse_LMAE)
[docs]def error_bias(data, k, metric): """ Calculate the bias of the error :param data: data to calculate the distance :param k: number of neighbors :param metric: distance metric :return: bias of the error """ error_bias = [] for i in range(len(data)): neighbors = get_k_nearest_neighbors(data[i], data, k, metric) error_bias.append(np.sum(data[neighbors] - data[i]) / k) return error_bias