[docs]defobjective_function(self,y_true,y_predicted,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,X=None,sample_weight=None):"""Objective function for root mean squared log error for regression."""returnnp.sqrt(metrics.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]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,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,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,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]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,X=None,sample_weight=None):"""Objective function for mean absolute percentage error for time series regression."""if(y_true==0).any():raiseValueError("Mean Absolute Percentage Error cannot be used when ""targets contain the value 0.",)ifisinstance(y_true,pd.Series):y_true=y_true.to_numpy()ifisinstance(y_predicted,pd.Series):y_predicted=y_predicted.to_numpy()scaled_difference=(y_true-y_predicted)/y_truereturnnp.abs(scaled_difference).mean()*100
@classpropertydefpositive_only(self):"""If True, this objective is only valid for positive data."""returnTrue
[docs]defobjective_function(self,y_true,y_predicted,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,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,X=None,sample_weight=None):"""Objective function for maximum residual error for regression."""returnmetrics.max_error(y_true,y_predicted)
[docs]defobjective_function(self,y_true,y_predicted,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,)