imblearn.under_sampling
.NearMiss¶

class
imblearn.under_sampling.
NearMiss
(ratio='auto', return_indices=False, random_state=None, version=1, size_ngh=None, n_neighbors=3, ver3_samp_ngh=None, n_neighbors_ver3=3, n_jobs=1)[source][source]¶ Class to perform undersampling based on NearMiss methods.
Read more in the User Guide.
Parameters: ratio : str, dict, or callable, optional (default=’auto’)
Ratio to use for resampling the data set.
 If
str
, has to be one of: (i)'minority'
: resample the minority class; (ii)'majority'
: resample the majority class, (iii)'not minority'
: resample all classes apart of the minority class, (iv)'all'
: resample all classes, and (v)'auto'
: correspond to'all'
with for oversampling methods and'not minority'
for undersampling methods. The classes targeted will be oversampled or undersampled to achieve an equal number of sample with the majority or minority class.  If
dict
, the keys correspond to the targeted classes. The values correspond to the desired number of samples.  If callable, function taking
y
and returns adict
. The keys correspond to the targeted classes. The values correspond to the desired number of samples.
return_indices : bool, optional (default=False)
Whether or not to return the indices of the samples randomly selected from the majority class.
random_state : int, RandomState instance or None, optional (default=None)
If int,
random_state
is the seed used by the random number generator; IfRandomState
instance, random_state is the random number generator; IfNone
, the random number generator is theRandomState
instance used bynp.random
.version : int, optional (default=1)
Version of the NearMiss to use. Possible values are 1, 2 or 3.
size_ngh : int, optional (default=None)
Size of the neighbourhood to consider to compute the average distance to the minority point samples.
Deprecated since version 0.2:
size_ngh
is deprecated from 0.2 and will be replaced in 0.4 Usen_neighbors
instead.n_neighbors : int or object, optional (default=3)
If
int
, size of the neighbourhood to consider to compute the average distance to the minority point samples. If object, an estimator that inherits fromsklearn.neighbors.base.KNeighborsMixin
that will be used to find the k_neighbors.ver3_samp_ngh : int, optional (default=3)
NearMiss3 algorithm start by a phase of resampling. This parameter correspond to the number of neighbours selected create the sub_set in which the selection will be performed.
Deprecated since version 0.2:
ver3_samp_ngh
is deprecated from 0.2 and will be replaced in 0.4. Usen_neighbors_ver3
instead.n_neighbors_ver3 : int or object, optional (default=3)
If
int
, NearMiss3 algorithm start by a phase of resampling. This parameter correspond to the number of neighbours selected create the subset in which the selection will be performed. If object, an estimator that inherits fromsklearn.neighbors.base.KNeighborsMixin
that will be used to find the k_neighbors.n_jobs : int, optional (default=1)
The number of threads to open if possible.
Notes
The methods are based on [R9191].
Supports mutliclass resampling.
See Multiclass classification with undersampling and Nearmiss 1 & 2 & 3.
References
[R9191] (1, 2) I. Mani, I. Zhang. “kNN approach to unbalanced data distributions: a case study involving information extraction,” In Proceedings of workshop on learning from imbalanced datasets, 2003. Examples
>>> from collections import Counter >>> from sklearn.datasets import make_classification >>> from imblearn.under_sampling import NearMiss >>> X, y = make_classification(n_classes=2, class_sep=2, ... weights=[0.1, 0.9], n_informative=3, n_redundant=1, flip_y=0, ... n_features=20, n_clusters_per_class=1, n_samples=1000, random_state=10) >>> print('Original dataset shape {}'.format(Counter(y))) Original dataset shape Counter({1: 900, 0: 100}) >>> nm = NearMiss(random_state=42) >>> X_res, y_res = nm.fit_sample(X, y) >>> print('Resampled dataset shape {}'.format(Counter(y_res))) Resampled dataset shape Counter({0: 100, 1: 100})

__init__
(ratio='auto', return_indices=False, random_state=None, version=1, size_ngh=None, n_neighbors=3, ver3_samp_ngh=None, n_neighbors_ver3=3, n_jobs=1)[source][source]¶

fit
(X, y)[source]¶ Find the classes statistics before to perform sampling.
Parameters: X : {arraylike, sparse matrix}, shape (n_samples, n_features)
Matrix containing the data which have to be sampled.
y : arraylike, shape (n_samples,)
Corresponding label for each sample in X.
Returns: self : object,
Return self.

fit_sample
(X, y)[source]¶ Fit the statistics and resample the data directly.
Parameters: X : {arraylike, sparse matrix}, shape (n_samples, n_features)
Matrix containing the data which have to be sampled.
y : arraylike, shape (n_samples,)
Corresponding label for each sample in X.
Returns: X_resampled : {arraylike, sparse matrix}, shape (n_samples_new, n_features)
The array containing the resampled data.
y_resampled : arraylike, shape (n_samples_new,)
The corresponding label of X_resampled

get_params
(deep=True)[source]¶ Get parameters for this estimator.
Parameters: deep : boolean, optional
If True, will return the parameters for this estimator and contained subobjects that are estimators.
Returns: params : mapping of string to any
Parameter names mapped to their values.

sample
(X, y)[source]¶ Resample the dataset.
Parameters: X : {arraylike, sparse matrix}, shape (n_samples, n_features)
Matrix containing the data which have to be sampled.
y : arraylike, shape (n_samples,)
Corresponding label for each sample in X.
Returns: X_resampled : {ndarray, sparse matrix}, shape (n_samples_new, n_features)
The array containing the resampled data.
y_resampled : ndarray, shape (n_samples_new)
The corresponding label of X_resampled
 If