in bindings/python-compute/data_manager.py [0:0]
def compute_log_loss_per_data(pred_df, target_df, n_models, n_classes):
loss_list = []
if n_classes > 1:
# classification
log_loss_single = lambda x: log_loss([x[0]], [x[1:]], labels=list(range(n_classes)))
else:
# regression
log_loss_single = lambda x: mean_squared_log_error([x[0]], [x[1:]])
for model in range(n_models):
try:
ground_truth = target_df[TARGET_COL_OUT(model)].values
except KeyError:
ground_truth = target_df[TARGET_COL_OUT(0)].values
eval_array = np.hstack([np.expand_dims(ground_truth, axis=1),
pred_df.iloc[:, model * n_classes: (model + 1) * n_classes]])
loss_array = np.apply_along_axis(log_loss_single, 1, eval_array)
loss_list += [np.expand_dims(loss_array, 1)]
return np.hstack(loss_list)