自训练分类器#
- 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估计器对象
一个实现了
fit
和predict_proba
方法的估计器对象。调用fit
方法将拟合传递的估计器的克隆,该克隆将存储在estimator_
属性中。版本 1.6 中新增:
estimator
已添加以替换base_estimator
。- base_estimator估计器对象
一个实现了
fit
和predict_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
之前,所有未标记的样本都被标记。
参考文献
示例
>>> 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]#
使用
X
和y
作为训练数据拟合自训练分类器。- 参数:
- 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 的结果。