actual_loss = zero_one_loss(node.threshold, node, X, labels) if actual_loss < error_best: error_best = actual_loss best_tresh = -thresh best_feature = j i += 1 return best_tresh, best_feature best = np.inf best_f = 0 best_t = 0 node = TreeNode(0, 0, None, None, None, None, 0, 0, 0, None) for j in range(len(X[0])): node.feature = j node.threshold = 1 #opt_t = gradient_descend(1, node, X, labels) opt_t = minimize(quadratically_loss, 0, args=(node, X, labels), method='BFGS', tol=1e-04).x print("ottimizzo feature: ", j) err = quadratically_loss(opt_t, node, X, labels) if err < best: best = err best_f = j best_t = opt_t