[docs]defobjective_function(self,y_true,y_predicted,y_train=None,X=None,sample_weight=None,):"""Objective function for accuracy score for binary classification."""returnmetrics.accuracy_score(y_true,y_predicted,sample_weight=sample_weight)
[docs]defobjective_function(self,y_true,y_predicted,y_train=None,X=None,sample_weight=None,):"""Objective function for accuracy score for multiclass classification."""returnmetrics.accuracy_score(y_true,y_predicted,sample_weight=sample_weight)
[docs]defobjective_function(self,y_true,y_predicted,y_train=None,X=None,sample_weight=None,):"""Objective function for accuracy score for balanced accuracy for binary classification."""returnmetrics.balanced_accuracy_score(y_true,y_predicted,sample_weight=sample_weight,)
[docs]defobjective_function(self,y_true,y_predicted,y_train=None,X=None,sample_weight=None,):"""Objective function for accuracy score for balanced accuracy for multiclass classification."""returnmetrics.balanced_accuracy_score(y_true,y_predicted,sample_weight=sample_weight,)
[docs]defobjective_function(self,y_true,y_predicted,y_train=None,X=None,sample_weight=None,):"""Objective function for F1 score for binary classification."""returnmetrics.f1_score(y_true,y_predicted,zero_division=0.0,sample_weight=sample_weight,)
[docs]defobjective_function(self,y_true,y_predicted,y_train=None,X=None,sample_weight=None,):"""Objective function for F1 score for multiclass classification."""returnmetrics.f1_score(y_true,y_predicted,average="micro",zero_division=0.0,sample_weight=sample_weight,)
[docs]defobjective_function(self,y_true,y_predicted,y_train=None,X=None,sample_weight=None,):"""Objective function for F1 score for multiclass classification using macro averaging."""returnmetrics.f1_score(y_true,y_predicted,average="macro",zero_division=0.0,sample_weight=sample_weight,)
[docs]defobjective_function(self,y_true,y_predicted,y_train=None,X=None,sample_weight=None,):"""Objective function for F1 score for multiclass classification using weighted averaging."""returnmetrics.f1_score(y_true,y_predicted,average="weighted",zero_division=0.0,sample_weight=sample_weight,)
[docs]defobjective_function(self,y_true,y_predicted,y_train=None,X=None,sample_weight=None,):"""Objective function for precision score for binary classification."""returnmetrics.precision_score(y_true,y_predicted,zero_division=0.0,sample_weight=sample_weight,)
[docs]defobjective_function(self,y_true,y_predicted,y_train=None,X=None,sample_weight=None,):"""Objective function for precision score for binary classification using micro-averaging."""returnmetrics.precision_score(y_true,y_predicted,average="micro",zero_division=0.0,sample_weight=sample_weight,)
[docs]defobjective_function(self,y_true,y_predicted,y_train=None,X=None,sample_weight=None,):"""Objective function for precision score for multiclass classification using macro-averaging."""returnmetrics.precision_score(y_true,y_predicted,average="macro",zero_division=0.0,sample_weight=sample_weight,)
[docs]defobjective_function(self,y_true,y_predicted,y_train=None,X=None,sample_weight=None,):"""Objective function for precision score for multiclass classification using weighted averaging."""returnmetrics.precision_score(y_true,y_predicted,average="weighted",zero_division=0.0,sample_weight=sample_weight,)
[docs]defobjective_function(self,y_true,y_predicted,y_train=None,X=None,sample_weight=None,):"""Objective function for recall score for binary classification."""returnmetrics.recall_score(y_true,y_predicted,zero_division=0.0,sample_weight=sample_weight,)
[docs]defobjective_function(self,y_true,y_predicted,y_train=None,X=None,sample_weight=None,):"""Objective function for recall score for multiclass classification using micro-averaging."""returnmetrics.recall_score(y_true,y_predicted,average="micro",zero_division=0.0,sample_weight=sample_weight,)
[docs]defobjective_function(self,y_true,y_predicted,y_train=None,X=None,sample_weight=None,):"""Objective function for recall score for multiclass classification using macro-averaging."""returnmetrics.recall_score(y_true,y_predicted,average="macro",zero_division=0.0,sample_weight=sample_weight,)
[docs]defobjective_function(self,y_true,y_predicted,y_train=None,X=None,sample_weight=None,):"""Objective function for recall score for multiclass classification using weighted averaging."""returnmetrics.recall_score(y_true,y_predicted,average="weighted",zero_division=0.0,sample_weight=sample_weight,)
[docs]defobjective_function(self,y_true,y_predicted,y_train=None,X=None,sample_weight=None,):"""Objective function for AUC score for binary classification."""returnmetrics.roc_auc_score(y_true,y_predicted,sample_weight=sample_weight)
[docs]defobjective_function(self,y_true,y_predicted,y_train=None,X=None,sample_weight=None,):"""Objective function for AUC score for multiclass classification using micro-averaging."""y_true,y_predicted=_handle_predictions(y_true,y_predicted)returnmetrics.roc_auc_score(y_true,y_predicted,average="micro",sample_weight=sample_weight,)
[docs]defobjective_function(self,y_true,y_predicted,y_train=None,X=None,sample_weight=None,):"""Objective function for AUC score for multiclass classification using macro-averaging."""y_true,y_predicted=_handle_predictions(y_true,y_predicted)returnmetrics.roc_auc_score(y_true,y_predicted,average="macro",sample_weight=sample_weight,)
[docs]defobjective_function(self,y_true,y_predicted,y_train=None,X=None,sample_weight=None,):"""Objective function for AUC Score for multiclass classification using weighted averaging."""y_true,y_predicted=_handle_predictions(y_true,y_predicted)returnmetrics.roc_auc_score(y_true,y_predicted,average="weighted",sample_weight=sample_weight,)
[docs]defobjective_function(self,y_true,y_predicted,y_train=None,X=None,sample_weight=None,):"""Objective function for Gini coefficient for binary classification."""auc=metrics.roc_auc_score(y_true,y_predicted,sample_weight=sample_weight)return2*auc-1
[docs]defobjective_function(self,y_true,y_predicted,y_train=None,X=None,sample_weight=None,):"""Objective function for log loss for binary classification."""returnmetrics.log_loss(y_true,y_predicted,sample_weight=sample_weight)
[docs]defobjective_function(self,y_true,y_predicted,y_train=None,X=None,sample_weight=None,):"""Objective function for log loss for multiclass classification."""returnmetrics.log_loss(y_true,y_predicted,sample_weight=sample_weight)
[docs]defobjective_function(self,y_true,y_predicted,y_train=None,X=None,sample_weight=None,):"""Objective function for Matthews correlation coefficient for binary classification."""withwarnings.catch_warnings():# catches runtime warning when dividing by 0.0warnings.simplefilter("ignore",RuntimeWarning)returnmetrics.matthews_corrcoef(y_true,y_predicted,sample_weight=sample_weight,)
[docs]defobjective_function(self,y_true,y_predicted,y_train=None,X=None,sample_weight=None,):"""Objective function for Matthews correlation coefficient for multiclass classification."""withwarnings.catch_warnings():# catches runtime warning when dividing by 0.0warnings.simplefilter("ignore",RuntimeWarning)returnmetrics.matthews_corrcoef(y_true,y_predicted,sample_weight=sample_weight,)
[docs]defobjective_function(self,y_true,y_predicted,y_train=None,X=None,sample_weight=None,):"""Objective function for root mean squared error for regression."""returnmetrics.mean_squared_error(y_true,y_predicted,squared=False,sample_weight=sample_weight,)
[docs]classRootMeanSquaredLogError(RegressionObjective):"""Root mean squared log error for regression. Only valid for nonnegative inputs. Otherwise, will throw a ValueError. Example: >>> y_true = pd.Series([1.5, 2, 3, 1, 0.5, 1, 2.5, 2.5, 1, 0.5, 2]) >>> y_pred = pd.Series([1.5, 2.5, 2, 1, 0.5, 1, 3, 2.25, 0.75, 0.25, 1.75]) >>> np.testing.assert_almost_equal(RootMeanSquaredLogError().objective_function(y_true, y_pred), 0.13090204) """name="Root Mean Squared Log Error"greater_is_better=Falsescore_needs_proba=Falseperfect_score=0.0is_bounded_like_percentage=False# Range [0, Inf)expected_range=[0,float("inf")]
[docs]defobjective_function(self,y_true,y_predicted,y_train=None,X=None,sample_weight=None,):"""Objective function for root mean squared log error for regression."""defrmsle(y_true,y_pred):returnnp.sqrt(metrics.mean_squared_log_error(y_true,y_pred,sample_weight=sample_weight,),)# Multiseries time series regressionifisinstance(y_true,pd.DataFrame):raw_rmsles=[]foriinrange(len(y_true.columns)):y_true_i=y_true.iloc[:,i]y_predicted_i=y_predicted.iloc[:,i]raw_rmsles.append(rmsle(y_true_i,y_predicted_i))returnnp.mean(raw_rmsles)# All univariate regressionreturnrmsle(y_true,y_predicted)
@classpropertydefpositive_only(self):"""If True, this objective is only valid for positive data."""returnTrue
[docs]classMeanSquaredLogError(RegressionObjective):"""Mean squared log error for regression. Only valid for nonnegative inputs. Otherwise, will throw a ValueError. Example: >>> y_true = pd.Series([1.5, 2, 3, 1, 0.5, 1, 2.5, 2.5, 1, 0.5, 2]) >>> y_pred = pd.Series([1.5, 2.5, 2, 1, 0.5, 1, 3, 2.25, 0.75, 0.25, 1.75]) >>> np.testing.assert_almost_equal(MeanSquaredLogError().objective_function(y_true, y_pred), 0.0171353) """name="Mean Squared Log Error"greater_is_better=Falsescore_needs_proba=Falseperfect_score=0.0is_bounded_like_percentage=False# Range [0, Inf)expected_range=[0,float("inf")]
[docs]defobjective_function(self,y_true,y_predicted,y_train=None,X=None,sample_weight=None,):"""Objective function for mean squared log error for regression."""returnmetrics.mean_squared_log_error(y_true,y_predicted,sample_weight=sample_weight,)
@classpropertydefpositive_only(self):"""If True, this objective is only valid for positive data."""returnTrue
[docs]defobjective_function(self,y_true,y_predicted,y_train=None,X=None,sample_weight=None,):"""Objective function for coefficient of determination for regression."""returnmetrics.r2_score(y_true,y_predicted,sample_weight=sample_weight)
[docs]defobjective_function(self,y_true,y_predicted,y_train=None,X=None,sample_weight=None,):"""Objective function for mean absolute error for regression."""returnmetrics.mean_absolute_error(y_true,y_predicted,sample_weight=sample_weight,)
[docs]classMASE(TimeSeriesRegressionObjective):"""Mean absolute scaled error for time series regression. Only valid if there exists a nonzero input in y_train. Otherwise, will throw a ValueError. Example: >>> y_train = pd.Series([5, 0.5, 4, 6, 3, 5, 2]) >>> y_true = pd.Series([3, -0.5, 2, 7, 2]) >>> y_pred = pd.Series([2.5, 0.0, 2, 8, 1.25]) >>> np.testing.assert_almost_equal(MASE().objective_function(y_true, y_pred, y_train), 0.18333333333333335) """name="Mean Absolute Scaled Error"greater_is_better=Falsescore_needs_proba=Falseperfect_score=0.0is_bounded_like_percentage=False# Range [0, Inf)expected_range=[0,float("inf")]
[docs]defobjective_function(self,y_true,y_predicted,y_train,X=None,sample_weight=None,):"""Objective function for mean absolute scaled error for time series regression."""if(y_train.values==0).all():raiseValueError("Mean Absolute Scaled Error cannot be used when ""all training targets contain the value 0.",)mase=MeanAbsoluteScaledError()returnmase(y_true,y_predicted,y_train=y_train)
[docs]classMAPE(TimeSeriesRegressionObjective):"""Mean absolute percentage error for time series regression. Scaled by 100 to return a percentage. Only valid for nonzero inputs. Otherwise, will throw a ValueError. Example: >>> y_true = pd.Series([1.5, 2, 3, 1, 0.5, 1, 2.5, 2.5, 1, 0.5, 2]) >>> y_pred = pd.Series([1.5, 2.5, 2, 1, 0.5, 1, 3, 2.25, 0.75, 0.25, 1.75]) >>> np.testing.assert_almost_equal(MAPE().objective_function(y_true, y_pred), 15.9848484) """name="Mean Absolute Percentage Error"greater_is_better=Falsescore_needs_proba=Falseperfect_score=0.0is_bounded_like_percentage=False# Range [0, Inf)expected_range=[0,float("inf")]
[docs]defobjective_function(self,y_true,y_predicted,y_train=None,X=None,sample_weight=None,):"""Objective function for mean absolute percentage error for time series regression."""if0iny_true.values:raiseValueError("Mean Absolute Percentage Error cannot be used when ""targets contain the value 0.",)mape=MeanAbsolutePercentageError()returnmape(y_true,y_predicted)*100
[docs]classSMAPE(TimeSeriesRegressionObjective):"""Symmetric mean absolute percentage error for time series regression. Scaled by 100 to return a percentage. Only valid for nonzero inputs. Otherwise, will throw a ValueError. Example: >>> y_true = pd.Series([1.5, 2, 3, 1, 0.5, 1, 2.5, 2.5, 1, 0.5, 2]) >>> y_pred = pd.Series([1.5, 2.5, 2, 1, 0.5, 1, 3, 2.25, 0.75, 0.25, 1.75]) >>> np.testing.assert_almost_equal(SMAPE().objective_function(y_true, y_pred), 18.13652589) """name="Symmetric Mean Absolute Percentage Error"greater_is_better=Falsescore_needs_proba=Falseperfect_score=0.0is_bounded_like_percentage=True# Range [0, 200]expected_range=[0,200]
[docs]defobjective_function(self,y_true,y_predicted,y_train=None,X=None,sample_weight=None,):"""Objective function for symmetric mean absolute percentage error for time series regression."""if0in(abs(y_true)+abs(y_predicted)).values:raiseValueError("Symmetric Mean Absolute Percentage Error cannot be used when ""true and predicted targets both contain the value 0.",)smape=MeanAbsolutePercentageError(symmetric=True)returnsmape(y_true,y_predicted)*100
[docs]defobjective_function(self,y_true,y_predicted,y_train=None,X=None,sample_weight=None,):"""Objective function for mean squared error for regression."""returnmetrics.mean_squared_error(y_true,y_predicted,sample_weight=sample_weight,)
[docs]defobjective_function(self,y_true,y_predicted,y_train=None,X=None,sample_weight=None,):"""Objective function for median absolute error for regression."""returnmetrics.median_absolute_error(y_true,y_predicted,sample_weight=sample_weight,)
[docs]defobjective_function(self,y_true,y_predicted,y_train=None,X=None,sample_weight=None,):"""Objective function for maximum residual error for regression."""# Multiseries time series regressionifisinstance(y_true,pd.DataFrame):raw_max_errors=[]foriinrange(len(y_true.columns)):y_true_i=y_true.iloc[:,i]y_predicted_i=y_predicted.iloc[:,i]raw_max_errors.append(metrics.max_error(y_true_i,y_predicted_i))returnnp.mean(raw_max_errors)# All other regression problemsreturnmetrics.max_error(y_true,y_predicted)
[docs]defobjective_function(self,y_true,y_predicted,y_train=None,X=None,sample_weight=None,):"""Objective function for explained variance score for regression."""returnmetrics.explained_variance_score(y_true,y_predicted,sample_weight=sample_weight,)