Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
75 changes: 75 additions & 0 deletions sklearn/_loss/_loss.pxd
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 double2:
double val1
double val2


# C base class for loss functions
cdef class cLossFunction:
cdef double closs(self, double y_true, double raw_prediction) nogil
cdef double cgradient(self, double y_true, double raw_prediction) nogil
cdef double2 cgrad_hess(self, double y_true, double raw_prediction) nogil


cdef class cHalfSquaredError(cLossFunction):
cdef double closs(self, double y_true, double raw_prediction) nogil
cdef double cgradient(self, double y_true, double raw_prediction) nogil
cdef double2 cgrad_hess(self, double y_true, double raw_prediction) nogil


cdef class cAbsoluteError(cLossFunction):
cdef double closs(self, double y_true, double raw_prediction) nogil
cdef double cgradient(self, double y_true, double raw_prediction) nogil
cdef double2 cgrad_hess(self, double y_true, double raw_prediction) nogil


cdef class cPinballLoss(cLossFunction):
cdef readonly double quantile # readonly makes it inherited by children
cdef double closs(self, double y_true, double raw_prediction) nogil
cdef double cgradient(self, double y_true, double raw_prediction) nogil
cdef double2 cgrad_hess(self, double y_true, double raw_prediction) nogil


cdef class cHalfPoissonLoss(cLossFunction):
cdef double closs(self, double y_true, double raw_prediction) nogil
cdef double cgradient(self, double y_true, double raw_prediction) nogil
cdef double2 cgrad_hess(self, double y_true, double raw_prediction) nogil


cdef class cHalfGammaLoss(cLossFunction):
cdef double closs(self, double y_true, double raw_prediction) nogil
cdef double cgradient(self, double y_true, double raw_prediction) nogil
cdef double2 cgrad_hess(self, double y_true, double raw_prediction) nogil


cdef class cHalfTweedieLoss(cLossFunction):
cdef readonly double power # readonly makes it inherited by children
cdef double closs(self, double y_true, double raw_prediction) nogil
cdef double cgradient(self, double y_true, double raw_prediction) nogil
cdef double2 cgrad_hess(self, double y_true, double raw_prediction) nogil


cdef class cBinaryCrossEntropy(cLossFunction):
cdef double closs(self, double y_true, double raw_prediction) nogil
cdef double cgradient(self, double y_true, double raw_prediction) nogil
cdef double2 cgrad_hess(self, double y_true, double raw_prediction) nogil
Loading