adapt.instance_based.NearestNeighborsWeighting
- class adapt.instance_based.NearestNeighborsWeighting(estimator=None, Xt=None, n_neighbors=5, radius=1.0, algorithm='auto', leaf_size=30, metric='minkowski', p=2, metric_params=None, n_jobs=None, copy=True, verbose=1, random_state=None, **params)[source]
NNW : Nearest Neighbors Weighting
NNW reweights the source instances in order according to their number of neighbors in the target dataset.
- Parameters
- estimatorsklearn estimator or tensorflow Model (default=None)
Estimator used to learn the task. If estimator is
None
, aLinearRegression
instance is used as estimator.- Xtnumpy array (default=None)
Target input data.
- n_neighborsint, (default=5)
Number of neighbors to use by default for kneighbors queries.
- radiusfloat, (default=1.0)
Range of parameter space to use by default for radius_neighbors queries.
- algorithm{‘auto’, ‘ball_tree’, ‘kd_tree’, ‘brute’}, (default=’auto’)
Algorithm used to compute the nearest neighbors:
‘ball_tree’ will use
BallTree
‘kd_tree’ will use
KDTree
‘brute’ will use a brute-force search.
‘auto’ will attempt to decide the most appropriate algorithm based on the values passed to
fit
method.
Note: fitting on sparse input will override the setting of this parameter, using brute force.
- leaf_sizeint, (default=30)
Leaf size passed to BallTree or KDTree. This can affect the speed of the construction and query, as well as the memory required to store the tree. The optimal value depends on the nature of the problem.
- metricstr or callable, (default=’minkowski’)
The distance metric to use for the tree. The default metric is minkowski, and with p=2 is equivalent to the standard Euclidean metric. For a list of available metrics, see the documentation of sklearn.metrics.DistanceMetric. If metric is “precomputed”, X is assumed to be a distance matrix and must be square during fit. X may be a sparse graph, in which case only “nonzero” elements may be considered neighbors.
- pint, (default=2)
Parameter for the Minkowski metric from sklearn.metrics.pairwise.pairwise_distances. When p = 1, this is equivalent to using manhattan_distance (l1), and euclidean_distance (l2) for p = 2. For arbitrary p, minkowski_distance (l_p) is used.
- metric_paramsdict, (default=None)
Additional keyword arguments for the metric function.
- n_jobsint, (default=None)
The number of parallel jobs to run for neighbors search.
None
means 1 unless in a joblib.parallel_backend context.-1
means using all processors.- copyboolean (default=True)
Whether to make a copy of
estimator
or not.- verboseint (default=1)
Verbosity level.
- random_stateint (default=None)
Seed of random generator.
- paramskey, value arguments
Arguments given at the different level of the adapt object. It can be, for instance, compile or fit parameters of the estimator or kernel parameters etc… Accepted parameters can be found by calling the method
_get_legal_params(params)
.
References
- 1
[1] M. Loog. “Nearest neighbor-based importance weighting”. In MLSP 2012.
Examples
>>> from sklearn.linear_model import RidgeClassifier >>> from adapt.utils import make_classification_da >>> from adapt.instance_based import NearestNeighborsWeighting >>> Xs, ys, Xt, yt = make_classification_da() >>> model = NearestNeighborsWeighting(RidgeClassifier(), n_neighbors=5, Xt=Xt, random_state=0) >>> model.fit(Xs, ys) Fit weights... Fit Estimator... >>> model.score(Xt, yt) 0.66
- Attributes
- weights_numpy array
Training instance weights.
- estimator_object
Estimator.
Methods
__init__
([estimator, Xt, n_neighbors, ...])fit
(X, y[, Xt, yt, domains])Fit Adapt Model.
fit_estimator
(X, y[, sample_weight, ...])Fit estimator on X, y.
fit_weights
(Xs, Xt, **kwargs)Fit importance weighting.
Get metadata routing of this object.
get_params
([deep])Get parameters for this estimator.
predict
(X[, domain])Return estimator predictions after adaptation.
predict_estimator
(X, **predict_params)Return estimator predictions for X.
Return fitted source weights
score
(X, y[, sample_weight, domain])Return the estimator score.
set_fit_request
(*[, domains])Request metadata passed to the
fit
method.set_params
(**params)Set the parameters of this estimator.
set_predict_request
(*[, domain])Request metadata passed to the
predict
method.set_score_request
(*[, domain, sample_weight])Request metadata passed to the
score
method.unsupervised_score
(Xs, Xt)Return unsupervised score.
- __init__(estimator=None, Xt=None, n_neighbors=5, radius=1.0, algorithm='auto', leaf_size=30, metric='minkowski', p=2, metric_params=None, n_jobs=None, copy=True, verbose=1, random_state=None, **params)[source]
- fit(X, y, Xt=None, yt=None, domains=None, **fit_params)[source]
Fit Adapt Model.
For feature-based models, the transformation of the input features
Xs
andXt
is first fitted. In a second stage, theestimator_
is fitted on the transformed features.For instance-based models, source importance weights are first learned based on
Xs, ys
andXt
. In a second stage, theestimator_
is fitted onXs, ys
with the learned importance weights.- Parameters
- Xnumpy array
Source input data.
- ynumpy array
Source output data.
- Xtarray (default=None)
Target input data. If None, the Xt argument given in init is used.
- ytarray (default=None)
Target input data. Only needed for supervised and semi-supervised Adapt model. If None, the yt argument given in init is used.
- domainsarray (default=None)
Vector giving the domain for each source data. Can be used for multisource purpose.
- fit_paramskey, value arguments
Arguments given to the fit method of the estimator.
- Returns
- selfreturns an instance of self
- fit_estimator(X, y, sample_weight=None, random_state=None, warm_start=True, **fit_params)[source]
Fit estimator on X, y.
- Parameters
- Xarray
Input data.
- yarray
Output data.
- sample_weightarray
Importance weighting.
- random_stateint (default=None)
Seed of the random generator
- warm_startbool (default=True)
If True, continue to fit
estimator_
, else, a new estimator is fitted based on a copy ofestimator
. (Be sure to setcopy=True
to usewarm_start=False
)- fit_paramskey, value arguments
Arguments given to the fit method of the estimator and to the compile method for tensorflow estimator.
- Returns
- estimator_fitted estimator
- fit_weights(Xs, Xt, **kwargs)[source]
Fit importance weighting.
- Parameters
- Xsarray
Input source data.
- Xtarray
Input target data.
- kwargskey, value argument
Not used, present here for adapt consistency.
- Returns
- weights_sample weights
- get_metadata_routing()[source]
Get metadata routing of this object.
Please check User Guide on how the routing mechanism works.
- Returns
- routingMetadataRequest
A
MetadataRequest
encapsulating routing information.
- get_params(deep=True)[source]
Get parameters for this estimator.
- Parameters
- deepbool, default=True
Not used, here for scikit-learn compatibility.
- Returns
- paramsdict
Parameter names mapped to their values.
- predict(X, domain=None, **predict_params)[source]
Return estimator predictions after adaptation.
For feature-based method (object which implements a
transform
method), the input featureX
are first transformed. Then thepredict
method of the fitted estimatorestimator_
is applied on the transformedX
.- Parameters
- Xarray
input data
- domainstr (default=None)
For antisymetric feature-based method, different transformation of the input X are applied for different domains. The domain should then be specified between “src” and “tgt”. If
None
the default transformation is the target one.
- Returns
- y_predarray
prediction of the Adapt Model.
- predict_estimator(X, **predict_params)[source]
Return estimator predictions for X.
- Parameters
- Xarray
input data
- Returns
- y_predarray
prediction of estimator.
- score(X, y, sample_weight=None, domain=None)[source]
Return the estimator score.
If the object has a
transform
method, the estimator is applied on the transformed features X. For antisymetric transformation, a parameter domain can be set to specified between source and target transformation.Call score on sklearn estimator and evaluate on tensorflow Model.
- Parameters
- Xarray
input data
- yarray
output data
- sample_weightarray (default=None)
Sample weights
- domainstr (default=None)
This parameter specifies for antisymetric feature-based method which transformation will be applied between “source” and “target”. If
None
the transformation by default is the target one.
- Returns
- scorefloat
estimator score.
- set_fit_request(*, domains: Union[bool, None, str] = '$UNCHANGED$') adapt.instance_based._nearestneighborsweighting.NearestNeighborsWeighting [source]
Request metadata passed to the
fit
method.Note that this method is only relevant if
enable_metadata_routing=True
(seesklearn.set_config()
). Please see User Guide on how the routing mechanism works.The options for each parameter are:
True
: metadata is requested, and passed tofit
if provided. The request is ignored if metadata is not provided.False
: metadata is not requested and the meta-estimator will not pass it tofit
.None
: metadata is not requested, and the meta-estimator will raise an error if the user provides it.str
: metadata should be passed to the meta-estimator with this given alias instead of the original name.
The default (
sklearn.utils.metadata_routing.UNCHANGED
) retains the existing request. This allows you to change the request for some parameters and not others.New in version 1.3.
Note
This method is only relevant if this estimator is used as a sub-estimator of a meta-estimator, e.g. used inside a
Pipeline
. Otherwise it has no effect.- Parameters
- domainsstr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED
Metadata routing for
domains
parameter infit
.
- Returns
- selfobject
The updated object.
- set_params(**params)[source]
Set the parameters of this estimator.
- Parameters
- **paramsdict
Estimator parameters.
- Returns
- selfestimator instance
Estimator instance.
- set_predict_request(*, domain: Union[bool, None, str] = '$UNCHANGED$') adapt.instance_based._nearestneighborsweighting.NearestNeighborsWeighting [source]
Request metadata passed to the
predict
method.Note that this method is only relevant if
enable_metadata_routing=True
(seesklearn.set_config()
). Please see User Guide on how the routing mechanism works.The options for each parameter are:
True
: metadata is requested, and passed topredict
if provided. The request is ignored if metadata is not provided.False
: metadata is not requested and the meta-estimator will not pass it topredict
.None
: metadata is not requested, and the meta-estimator will raise an error if the user provides it.str
: metadata should be passed to the meta-estimator with this given alias instead of the original name.
The default (
sklearn.utils.metadata_routing.UNCHANGED
) retains the existing request. This allows you to change the request for some parameters and not others.New in version 1.3.
Note
This method is only relevant if this estimator is used as a sub-estimator of a meta-estimator, e.g. used inside a
Pipeline
. Otherwise it has no effect.- Parameters
- domainstr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED
Metadata routing for
domain
parameter inpredict
.
- Returns
- selfobject
The updated object.
- set_score_request(*, domain: Union[bool, None, str] = '$UNCHANGED$', sample_weight: Union[bool, None, str] = '$UNCHANGED$') adapt.instance_based._nearestneighborsweighting.NearestNeighborsWeighting [source]
Request metadata passed to the
score
method.Note that this method is only relevant if
enable_metadata_routing=True
(seesklearn.set_config()
). Please see User Guide on how the routing mechanism works.The options for each parameter are:
True
: metadata is requested, and passed toscore
if provided. The request is ignored if metadata is not provided.False
: metadata is not requested and the meta-estimator will not pass it toscore
.None
: metadata is not requested, and the meta-estimator will raise an error if the user provides it.str
: metadata should be passed to the meta-estimator with this given alias instead of the original name.
The default (
sklearn.utils.metadata_routing.UNCHANGED
) retains the existing request. This allows you to change the request for some parameters and not others.New in version 1.3.
Note
This method is only relevant if this estimator is used as a sub-estimator of a meta-estimator, e.g. used inside a
Pipeline
. Otherwise it has no effect.- Parameters
- domainstr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED
Metadata routing for
domain
parameter inscore
.- sample_weightstr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED
Metadata routing for
sample_weight
parameter inscore
.
- Returns
- selfobject
The updated object.