SelfTrainingClassifier#

class sklearn.semi_supervised.SelfTrainingClassifier(estimator=None, base_estimator='deprecated', threshold=0.75, criterion='threshold', k_best=10, max_iter=10, verbose=False)[source]#

自训练分类器。

这个元估计器允许给定的有监督分类器作为半监督分类器运行,使其能够从未标记数据中学习。它通过迭代地预测未标记数据的伪标签并将其添加到训练集中来实现这一点。

分类器将继续迭代,直到达到 max_iter,或者在上次迭代中没有伪标签被添加到训练集中。

更多信息请参阅用户指南

参数:
estimator估计器对象

一个实现 fitpredict_proba 的估计器对象。调用 fit 方法将拟合所传入估计器的一个克隆,该克隆将存储在 estimator_ 属性中。

1.6 版本新增: estimator 被添加以替换 base_estimator

base_estimator估计器对象

一个实现 fitpredict_proba 的估计器对象。调用 fit 方法将拟合所传入估计器的一个克隆,该克隆将存储在 estimator_ 属性中。

自 1.6 版本废弃: base_estimator 在 1.6 版本中已废弃,并将在 1.8 版本中移除。请改用 estimator

threshold浮点数, 默认值=0.75

criterion='threshold' 一起使用的决策阈值。应在 [0, 1) 范围内。当使用 'threshold' 准则时,应使用良好校准的分类器

criterion{‘threshold’, ‘k_best’}, 默认值=’threshold’

用于选择要添加到训练集中的标签的选择准则。如果为 'threshold',则将预测概率高于 threshold 的伪标签添加到数据集中。如果为 'k_best',则将预测概率最高的 k_best 个伪标签添加到数据集中。当使用“threshold”准则时,应使用良好校准的分类器

k_best整数, 默认值=10

每次迭代中要添加的样本数量。仅在 criterion='k_best' 时使用。

max_iter整数或 None, 默认值=10

允许的最大迭代次数。应大于或等于 0。如果为 None,分类器将继续预测标签,直到没有新的伪标签被添加,或者所有未标记的样本都被标记。

verbose布尔值, 默认值=False

启用详细输出。

属性:
estimator_估计器对象

已拟合的估计器。

classes_ndarray 或 ndarray 列表, 形状为 (n_classes,)

每个输出的类别标签。(取自训练过的 estimator_)。

transduction_形状为 (n_samples,) 的 ndarray

用于分类器最终拟合的标签,包括在拟合期间添加的伪标签。

labeled_iter_形状为 (n_samples,) 的 ndarray

每个样本被标记的迭代次数。当样本的迭代次数为 0 时,表示该样本在原始数据集中已被标记。当样本的迭代次数为 -1 时,表示该样本在任何迭代中都未被标记。

n_features_in_整数

拟合期间看到的特征数量。

0.24 版本新增。

feature_names_in_形状为 (n_features_in_,) 的 ndarray

拟合期间看到的特征名称。仅当 X 的所有特征名称均为字符串时才定义。

1.0 版本新增。

n_iter_整数

自训练的轮数,即基本估计器在训练集重新标记的变体上拟合的次数。

termination_condition_{‘max_iter’, ‘no_change’, ‘all_labeled’}

拟合停止的原因。

  • 'max_iter': n_iter_ 达到 max_iter

  • 'no_change': 未预测到新标签。

  • 'all_labeled': 在达到 max_iter 之前,所有未标记的样本都已标记。

另请参阅

LabelPropagation

标签传播分类器。

LabelSpreading

半监督学习的标签扩散模型。

参考文献

David Yarowsky. 1995. Unsupervised word sense disambiguation rivaling supervised methods. In Proceedings of the 33rd annual meeting on Association for Computational Linguistics (ACL ‘95). Association for Computational Linguistics, Stroudsburg, PA, USA, 189-196.

示例

>>> 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, **params)[source]#

调用 estimator 的决策函数。

参数:
X{类数组, 稀疏矩阵}, 形状为 (n_samples, n_features)

表示数据的数组。

**params字符串到对象的字典

要传递给底层估计器的 decision_function 方法的参数。

1.6 版本新增: 仅当 enable_metadata_routing=True 时可用,可以通过使用 sklearn.set_config(enable_metadata_routing=True) 进行设置。有关更多详细信息,请参阅元数据路由用户指南

返回:
y形状为 (n_samples, n_features) 的 ndarray

estimator 的决策函数结果。

fit(X, y, **params)[source]#

使用 Xy 作为训练数据拟合自训练分类器。

参数:
X{类数组, 稀疏矩阵}, 形状为 (n_samples, n_features)

表示数据的数组。

y{类数组, 稀疏矩阵}, 形状为 (n_samples,)

表示标签的数组。未标记的样本应具有标签 -1。

**params字典

要传递给底层估计器的参数。

1.6 版本新增: 仅当 enable_metadata_routing=True 时可用,可以通过使用 sklearn.set_config(enable_metadata_routing=True) 进行设置。有关更多详细信息,请参阅元数据路由用户指南

返回:
self对象

已拟合的估计器。

get_metadata_routing()[source]#

获取此对象的元数据路由。

请查阅用户指南,了解路由机制的工作原理。

1.6 版本新增。

返回:
routingMetadataRouter

一个封装路由信息的 MetadataRouter

get_params(deep=True)[source]#

获取此估计器的参数。

参数:
deep布尔值, 默认值=True

如果为 True,将返回此估计器及其包含的作为估计器的子对象的参数。

返回:
params字典

参数名称映射到其值。

predict(X, **params)[source]#

预测 X 的类别。

参数:
X{类数组, 稀疏矩阵}, 形状为 (n_samples, n_features)

表示数据的数组。

**params字符串到对象的字典

要传递给底层估计器的 predict 方法的参数。

1.6 版本新增: 仅当 enable_metadata_routing=True 时可用,可以通过使用 sklearn.set_config(enable_metadata_routing=True) 进行设置。有关更多详细信息,请参阅元数据路由用户指南

返回:
y形状为 (n_samples,) 的 ndarray

带有预测标签的数组。

predict_log_proba(X, **params)[source]#

预测每个可能结果的对数概率。

参数:
X{类数组, 稀疏矩阵}, 形状为 (n_samples, n_features)

表示数据的数组。

**params字符串到对象的字典

要传递给底层估计器的 predict_log_proba 方法的参数。

1.6 版本新增: 仅当 enable_metadata_routing=True 时可用,可以通过使用 sklearn.set_config(enable_metadata_routing=True) 进行设置。有关更多详细信息,请参阅元数据路由用户指南

返回:
y形状为 (n_samples, n_features) 的 ndarray

带有对数预测概率的数组。

predict_proba(X, **params)[source]#

预测每个可能结果的概率。

参数:
X{类数组, 稀疏矩阵}, 形状为 (n_samples, n_features)

表示数据的数组。

**params字符串到对象的字典

要传递给底层估计器的 predict_proba 方法的参数。

1.6 版本新增: 仅当 enable_metadata_routing=True 时可用,可以通过使用 sklearn.set_config(enable_metadata_routing=True) 进行设置。有关更多详细信息,请参阅元数据路由用户指南

返回:
y形状为 (n_samples, n_features) 的 ndarray

带有预测概率的数组。

score(X, y, **params)[source]#

调用 estimator 上的评分。

参数:
X{类数组, 稀疏矩阵}, 形状为 (n_samples, n_features)

表示数据的数组。

y类数组, 形状为 (n_samples,)

表示标签的数组。

**params字符串到对象的字典

要传递给底层估计器的 score 方法的参数。

1.6 版本新增: 仅当 enable_metadata_routing=True 时可用,可以通过使用 sklearn.set_config(enable_metadata_routing=True) 进行设置。有关更多详细信息,请参阅元数据路由用户指南

返回:
score浮点数

调用 estimator 上的评分结果。

set_params(**params)[source]#

设置此估计器的参数。

此方法适用于简单估计器以及嵌套对象(例如 Pipeline)。后者具有 <component>__<parameter> 形式的参数,以便可以更新嵌套对象的每个组件。

参数:
**params字典

估计器参数。

返回:
self估计器实例

估计器实例。