BalancedBatchGenerator#
- class imblearn.keras.BalancedBatchGenerator(X, y, *, sample_weight=None, sampler=None, batch_size=32, keep_sparse=False, random_state=None)[source]#
在训练Keras模型时创建平衡的批次。
创建一个keras
Sequence
,它被提供给fit
。采样器定义了在创建批次之前用于平衡数据集的采样策略。采样器应该有一个属性sample_indices_
。在版本0.4中添加。
- Parameters:
- Xndarray of shape (n_samples, n_features)
原始不平衡数据集。
- yndarray of shape (n_samples,) or (n_samples, n_classes)
关联目标。
- sample_weightndarray of shape (n_samples,)
样本权重。
- samplersampler object, default=None
一个具有属性
sample_indices_
的采样器实例。 默认情况下,使用的采样器是RandomUnderSampler
。- batch_sizeint, default=32
每次梯度更新的样本数量。
- keep_sparsebool, default=False
是否保留输入的稀疏性(即
X
,y
,sample_weight
)。默认情况下,返回的批次将是密集的。- random_stateint, RandomState instance or None, default=None
控制算法的随机化:
如果是整数,
random_state
是随机数生成器使用的种子;如果
RandomState
实例,random_state 是随机数生成器;如果
None
,随机数生成器是np.random
使用的RandomState
实例。
- Attributes:
- sampler_sampler object
用于平衡数据集的采样器。
- indices_ndarray of shape (n_samples, n_features)
采样过程中选择的样本的索引。
示例
>>> from sklearn.datasets import load_iris >>> iris = load_iris() >>> from imblearn.datasets import make_imbalance >>> class_dict = dict() >>> class_dict[0] = 30; class_dict[1] = 50; class_dict[2] = 40 >>> X, y = make_imbalance(iris.data, iris.target, sampling_strategy=class_dict) >>> import tensorflow >>> y = tensorflow.keras.utils.to_categorical(y, 3) >>> model = tensorflow.keras.models.Sequential() >>> model.add( ... tensorflow.keras.layers.Dense( ... y.shape[1], input_dim=X.shape[1], activation='softmax' ... ) ... ) >>> model.compile(optimizer='sgd', loss='categorical_crossentropy', ... metrics=['accuracy']) >>> from imblearn.keras import BalancedBatchGenerator >>> from imblearn.under_sampling import NearMiss >>> training_generator = BalancedBatchGenerator( ... X, y, sampler=NearMiss(), batch_size=10, random_state=42) >>> callback_history = model.fit(training_generator, epochs=10, verbose=0)
方法
在每个epoch开始时调用的方法。
在每个epoch结束时调用的方法。
- property num_batches#
PyDataset中的批次数量。
- Returns:
PyDataset中的批次数量或
None
表示数据集是无限的。