forked from scikit-learn/scikit-learn
-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
MRG Common Private Loss Module with tempita (scikit-learn#20567)
- Loading branch information
1 parent
4f4cef6
commit 001341e
Showing
11 changed files
with
3,644 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
""" | ||
The :mod:`sklearn._loss` module includes loss function classes suitable for | ||
fitting classification and regression tasks. | ||
""" | ||
|
||
from .loss import ( | ||
HalfSquaredError, | ||
AbsoluteError, | ||
PinballLoss, | ||
HalfPoissonLoss, | ||
HalfGammaLoss, | ||
HalfTweedieLoss, | ||
HalfBinomialLoss, | ||
HalfMultinomialLoss, | ||
) | ||
|
||
|
||
__all__ = [ | ||
"HalfSquaredError", | ||
"AbsoluteError", | ||
"PinballLoss", | ||
"HalfPoissonLoss", | ||
"HalfGammaLoss", | ||
"HalfTweedieLoss", | ||
"HalfBinomialLoss", | ||
"HalfMultinomialLoss", | ||
] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,75 @@ | ||
# cython: language_level=3 | ||
|
||
import numpy as np | ||
cimport numpy as np | ||
|
||
np.import_array() | ||
|
||
|
||
# Fused types for y_true, y_pred, raw_prediction | ||
ctypedef fused Y_DTYPE_C: | ||
np.npy_float64 | ||
np.npy_float32 | ||
|
||
|
||
# Fused types for gradient and hessian | ||
ctypedef fused G_DTYPE_C: | ||
np.npy_float64 | ||
np.npy_float32 | ||
|
||
|
||
# Struct to return 2 doubles | ||
ctypedef struct double_pair: | ||
double val1 | ||
double val2 | ||
|
||
|
||
# C base class for loss functions | ||
cdef class CyLossFunction: | ||
cdef double cy_loss(self, double y_true, double raw_prediction) nogil | ||
cdef double cy_gradient(self, double y_true, double raw_prediction) nogil | ||
cdef double_pair cy_grad_hess(self, double y_true, double raw_prediction) nogil | ||
|
||
|
||
cdef class CyHalfSquaredError(CyLossFunction): | ||
cdef double cy_loss(self, double y_true, double raw_prediction) nogil | ||
cdef double cy_gradient(self, double y_true, double raw_prediction) nogil | ||
cdef double_pair cy_grad_hess(self, double y_true, double raw_prediction) nogil | ||
|
||
|
||
cdef class CyAbsoluteError(CyLossFunction): | ||
cdef double cy_loss(self, double y_true, double raw_prediction) nogil | ||
cdef double cy_gradient(self, double y_true, double raw_prediction) nogil | ||
cdef double_pair cy_grad_hess(self, double y_true, double raw_prediction) nogil | ||
|
||
|
||
cdef class CyPinballLoss(CyLossFunction): | ||
cdef readonly double quantile # readonly makes it accessible from Python | ||
cdef double cy_loss(self, double y_true, double raw_prediction) nogil | ||
cdef double cy_gradient(self, double y_true, double raw_prediction) nogil | ||
cdef double_pair cy_grad_hess(self, double y_true, double raw_prediction) nogil | ||
|
||
|
||
cdef class CyHalfPoissonLoss(CyLossFunction): | ||
cdef double cy_loss(self, double y_true, double raw_prediction) nogil | ||
cdef double cy_gradient(self, double y_true, double raw_prediction) nogil | ||
cdef double_pair cy_grad_hess(self, double y_true, double raw_prediction) nogil | ||
|
||
|
||
cdef class CyHalfGammaLoss(CyLossFunction): | ||
cdef double cy_loss(self, double y_true, double raw_prediction) nogil | ||
cdef double cy_gradient(self, double y_true, double raw_prediction) nogil | ||
cdef double_pair cy_grad_hess(self, double y_true, double raw_prediction) nogil | ||
|
||
|
||
cdef class CyHalfTweedieLoss(CyLossFunction): | ||
cdef readonly double power # readonly makes it accessible from Python | ||
cdef double cy_loss(self, double y_true, double raw_prediction) nogil | ||
cdef double cy_gradient(self, double y_true, double raw_prediction) nogil | ||
cdef double_pair cy_grad_hess(self, double y_true, double raw_prediction) nogil | ||
|
||
|
||
cdef class CyHalfBinomialLoss(CyLossFunction): | ||
cdef double cy_loss(self, double y_true, double raw_prediction) nogil | ||
cdef double cy_gradient(self, double y_true, double raw_prediction) nogil | ||
cdef double_pair cy_grad_hess(self, double y_true, double raw_prediction) nogil |
Oops, something went wrong.