Open
Description
Pradeep,
could something like this be of interest for the library?
The idea would be to create a class that would do fit and predict including deconfounding and the use of the estimator in an encapsulated way.
Below is a skeleton example. This would only deconfound the input data.
cross_val_predict and cross_val_score functions could as well be implemented.
from sklearn.base import clone
class SklearnWrapper():
def __init__(self,
deconfounder,
estimator):
self.deconfounder = deconfounder
self.estimator = estimator
def fit(self,
input_data,
target_data,
confounders,
sample_weight=None):
# clone input arguments
deconfounder = clone(self.deconfounder)
estimator = clone(self.estimator)
# Deconfound input data
deconf_input = deconfounder.fit_transform(input_data, confounders)
self.deconfounder_ = deconfounder
# Fit deconfounded input data
estimator.fit(deconf_input, target_data, sample_weight)
self.estimator_ = estimator
return self
def predict(self,
input_data,
confounders):
deconf_input = self.deconfounder_.transform(input_data, confounders)
return self.estimator_.predict(deconf_input)
Metadata
Metadata
Assignees
Labels
No labels