Source code for evalml.objectives.lead_scoring

import pandas as pd

from .objective_base import ObjectiveBase

from evalml.problem_types import ProblemTypes


[docs]class LeadScoring(ObjectiveBase): """Lead scoring""" name = "Lead Scoring" problem_types = [ProblemTypes.BINARY] needs_fitting = True greater_is_better = True score_needs_proba = False name = "Lead Scoring"
[docs] def __init__(self, true_positives=1, false_positives=-1, verbose=False): """Create instance. Arguments: label (int) : label to optimize threshold for true_positives (int) : reward for a true positive false_positives (int) : cost for a false positive. Should be negative. """ self.true_positives = true_positives self.false_positives = false_positives super().__init__(verbose=verbose)
[docs] def decision_function(self, y_predicted, threshold): if not isinstance(y_predicted, pd.Series): y_predicted = pd.Series(y_predicted) return y_predicted > threshold
[docs] def objective_function(self, y_predicted, y_true): if not isinstance(y_predicted, pd.Series): y_predicted = pd.Series(y_predicted) if not isinstance(y_true, pd.Series): y_true = pd.Series(y_true) true_positives = (y_true & y_predicted).sum() false_positives = (~y_true & y_predicted).sum() profit = self.true_positives * true_positives profit += self.false_positives * false_positives profit_per_lead = profit / len(y_true) return profit_per_lead