自训练分类器#

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_形状为 (n_classes,) 的 ndarray 或 ndarray 列表

每个输出的类别标签。(取自训练的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之前,所有未标记的样本都被标记。

另请参见

标签传播

标签传播分类器。

标签扩散

用于半监督学习的标签传播模型。

参考文献

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) 的 {类数组,稀疏矩阵}

表示数据的数组。

**paramsstr -> 对象的字典

传递给底层估计器的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。

**paramsdict

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

版本 1.6 中新增: 仅当 enable_metadata_routing=True 时可用,可以通过 sklearn.set_config(enable_metadata_routing=True) 设置。更多详情请参见 元数据路由用户指南

返回:
selfobject

已拟合的估计器。

get_metadata_routing()[source]#

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

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

版本 1.6 中新增。

返回:
routingMetadataRouter

一个 MetadataRouter,封装了路由信息。

get_params(deep=True)[source]#

获取此估计器的参数。

参数:
deepbool,默认为 True

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

返回:
paramsdict

参数名称与其值的映射。

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

预测 X 的类别。

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

表示数据的数组。

**paramsstr -> 对象的字典

传递给底层估计器的 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) 的 {类数组,稀疏矩阵}

表示数据的数组。

**paramsstr -> 对象的字典

传递给底层估计器的 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) 的 {类数组,稀疏矩阵}

表示数据的数组。

**paramsstr -> 对象的字典

传递给底层估计器的 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 上调用 score。

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

表示数据的数组。

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

表示标签的数组。

**paramsstr -> 对象的字典

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

版本 1.6 中新增: 仅当 enable_metadata_routing=True 时可用,可以通过 sklearn.set_config(enable_metadata_routing=True) 设置。更多详情请参见 元数据路由用户指南

返回:
scorefloat

estimator 上调用 score 的结果。

set_params(**params)[source]#

设置此估计器的参数。

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

参数:
**paramsdict

估计器参数。

返回:
self估计器实例

估计器实例。