SelfTrainingClassifier#
- class sklearn.semi_supervised.SelfTrainingClassifier(base_estimator, threshold=0.75, criterion='threshold', k_best=10, max_iter=10, verbose=False)#
自训练分类器。
这个 metaestimator 允许给定的监督分类器作为半监督分类器运行,允许它从未标记的数据中学习。它通过迭代地预测未标记数据的伪标签并将其添加到训练集中来实现这一点。
分类器将继续迭代,直到达到 max_iter,或者在前一次迭代中没有伪标签被添加到训练集中。
更多信息请参阅 用户指南 。
- Parameters:
- base_estimatorestimator object
一个实现了
fit
和predict_proba
的估计器对象。 调用fit
方法将拟合传递的估计器的一个克隆,该克隆将存储在base_estimator_
属性中。- thresholdfloat, default=0.75
用于
criterion='threshold'
的决策阈值。 应在 [0, 1) 范围内。当使用'threshold'
标准时,应使用 校准良好的分类器 。- criterion{‘threshold’, ‘k_best’}, default=’threshold’
用于选择将哪些标签添加到训练集的选择标准。如果
'threshold'
,预测概率高于threshold
的伪标签将被添加到数据集中。如果'k_best'
,预测概率最高的k_best
伪标签将被添加到数据集中。当使用 ‘threshold’ 标准时,应使用 校准良好的分类器 。- k_bestint, default=10
每次迭代中要添加的样本数量。仅在
criterion='k_best'
时使用。- max_iterint or None, default=10
允许的最大迭代次数。应大于或等于 0。如果为
None
,分类器将继续预测标签,直到没有新的伪标签被添加,或者所有未标记的样本都被标记。- verbosebool, default=False
启用详细输出。
- Attributes:
- base_estimator_estimator object
已拟合的估计器。
- classes_ndarray 或 list of ndarray of shape (n_classes,)
每个输出的类标签。(取自训练的
base_estimator_
)。- transduction_ndarray of shape (n_samples,)
用于分类器最终拟合的标签,包括拟合过程中添加的伪标签。
- labeled_iter_ndarray of shape (n_samples,)
每个样本被标记的迭代次数。当样本的迭代次数为 0 时,该样本已经在原始数据集中被标记。当样本的迭代次数为 -1 时,该样本在任何迭代中都没有被标记。
- n_features_in_int
在 fit 过程中看到的特征数量。
Added in version 0.24.
- feature_names_in_ndarray of shape (
n_features_in_
,) 在 fit 过程中看到的特征名称。仅当
X
的特征名称均为字符串时定义。Added in version 1.0.
- n_iter_int
自训练的轮数,即基础估计器在重新标记的训练集变体上拟合的次数。
- termination_condition_{‘max_iter’, ‘no_change’, ‘all_labeled’}
拟合停止的原因。
'max_iter'
:n_iter_
达到max_iter
。'no_change'
:没有预测到新的标签。'all_labeled'
:所有未标记的样本在达到max_iter
之前被标记。
See also
LabelPropagation
标签传播分类器。
LabelSpreading
半监督学习的标签扩散模型。
References
Examples
>>> import numpy as np >>> from sklearn import datasets >>> from sklearn.semi_supervised import SelfTrainingClassifier >>> from sklearn.svm import SVC >>> rng = np.random.RandomState(42) >>> iris = datasets.load_iris() >>> random_unlabeled_points = rng.rand(iris.target.shape[0]) < 0.3 >>> iris.target[random_unlabeled_points] = -1 >>> svc = SVC(probability=True, gamma="auto") >>> self_training_model = SelfTrainingClassifier(svc) >>> self_training_model.fit(iris.data, iris.target) SelfTrainingClassifier(...)
- decision_function(X)#
调用
base_estimator
的决策函数。- Parameters:
- X{array-like, sparse matrix},形状为 (n_samples, n_features)
表示数据的数组。
- Returns:
- yndarray,形状为 (n_samples, n_features)
base_estimator
的决策函数的结果。
- fit(X, y)#
拟合自训练分类器使用
X
,y
作为训练数据。- Parameters:
- X{array-like, sparse matrix} 形状为 (n_samples, n_features)
表示数据的数组。
- y{array-like, sparse matrix} 形状为 (n_samples,)
表示标签的数组。未标记的样本应有标签 -1。
- Returns:
- selfobject
拟合的估计器。
- get_metadata_routing()#
Raise
NotImplementedError
.此估计器尚不支持元数据路由。
- get_params(deep=True)#
获取此估计器的参数。
- Parameters:
- deepbool, 默认=True
如果为True,将返回此估计器和包含的子对象(也是估计器)的参数。
- Returns:
- paramsdict
参数名称映射到它们的值。
- predict(X)#
预测
X
的类别。- Parameters:
- X{array-like, sparse matrix},形状为 (n_samples, n_features)
表示数据的数组。
- Returns:
- yndarray,形状为 (n_samples,)
包含预测标签的数组。
- predict_log_proba(X)#
预测每个可能结果的对数概率。
- Parameters:
- X{array-like, sparse matrix},形状为 (n_samples, n_features)
表示数据的数组。
- Returns:
- yndarray,形状为 (n_samples, n_features)
包含对数预测概率的数组。
- predict_proba(X)#
预测每个可能结果的概率。
- Parameters:
- X{array-like, sparse matrix},形状为 (n_samples, n_features)
表示数据的数组。
- Returns:
- y形状为 (n_samples, n_features) 的 ndarray
包含预测概率的数组。
- score(X, y)#
调用
base_estimator
上的score方法。- Parameters:
- X{array-like, sparse matrix},形状为 (n_samples, n_features)
表示数据的数组。
- y形状为 (n_samples,) 的array-like
表示标签的数组。
- Returns:
- scorefloat
调用
base_estimator
上的score方法的结果。