Perceptron#

class sklearn.linear_model.Perceptron(*, penalty=None, alpha=0.0001, l1_ratio=0.15, fit_intercept=True, max_iter=1000, tol=0.001, shuffle=True, verbose=0, eta0=1.0, n_jobs=None, random_state=0, early_stopping=False, validation_fraction=0.1, n_iter_no_change=5, class_weight=None, warm_start=False)#

线性感知机分类器。

该实现是围绕 SGDClassifier 的包装器, 通过固定 losslearning_rate 参数为:

SGDClassifier(loss="perceptron", learning_rate="constant")

其他可用参数如下所述,并转发到 SGDClassifier

更多信息请参阅 用户指南

Parameters:
penalty{‘l2’,’l1’,’elasticnet’}, default=None

使用的惩罚(即正则化项)。

alphafloat, default=0.0001

如果使用正则化,则乘以正则化项的常数。

l1_ratiofloat, default=0.15

Elastic Net 混合参数, 0 <= l1_ratio <= 1l1_ratio=0 对应 L2 惩罚, l1_ratio=1 对应 L1。 仅在 penalty='elasticnet' 时使用。

Added in version 0.24.

fit_interceptbool, default=True

是否应该估计截距。如果为 False,则假定数据已经中心化。

max_iterint, default=1000

对训练数据的最大遍数(即 epoch)。 它仅影响 fit 方法的行为,不影响 partial_fit 方法。

Added in version 0.19.

tolfloat or None, default=1e-3

停止标准。如果它不为 None,当 (loss > previous_loss - tol) 时迭代将停止。

Added in version 0.19.

shufflebool, default=True

是否应在每个 epoch 后打乱训练数据。

verboseint, default=0

详细级别。

eta0float, default=1

更新乘以的常数。

n_jobsint, default=None

用于 OVA(一对多,用于多类问题)计算的 CPU 数量。 None 表示 1,除非在 joblib.parallel_backend 上下文中。 -1 表示使用所有处理器。有关更多详细信息,请参阅 Glossary

random_stateint, RandomState instance or None, default=0

用于在 shuffle 设置为 True 时打乱训练数据。 传递一个 int 以在多次函数调用中获得可重复的输出。 请参阅 Glossary

early_stoppingbool, default=False

是否使用提前停止来终止训练,当验证分数没有改善时。 如果设置为 True,它将自动留出一部分训练数据作为验证,并在验证分数至少 tol 没有改善 n_iter_no_change 个连续 epoch 时终止训练。

Added in version 0.20.

validation_fractionfloat, default=0.1

留出作为验证集的训练数据比例。必须在 0 和 1 之间。 仅在 early_stopping 为 True 时使用。

Added in version 0.20.

n_iter_no_changeint, default=5

在提前停止之前等待的没有改善的迭代次数。

Added in version 0.20.

class_weightdict, {class_label: weight} or “balanced”, default=None

class_weight 拟合参数的预设。

与类关联的权重。如果未给出,则所有类都假定权重为 1。

“balanced” 模式使用 y 的值自动调整权重,与输入数据中的类频率成反比, 如 n_samples / (n_classes * np.bincount(y))

warm_startbool, default=False

当设置为 True 时,重用上一次调用 fit 的解决方案作为初始化,否则,只需擦除之前的解决方案。请参阅 the Glossary

Attributes:
classes_ndarray of shape (n_classes,)

唯一的类标签。

coef_ndarray of shape (1, n_features) if n_classes == 2 else (n_classes, n_features)

分配给特征的权重。

intercept_ndarray of shape (1,) if n_classes == 2 else (n_classes,)

决策函数中的常数。

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

达到停止标准时的实际迭代次数。 对于多类拟合,它是每个二元拟合中的最大值。

t_int

训练期间执行的权重更新次数。 与 (n_iter_ * n_samples + 1) 相同。

See also

sklearn.linear_model.SGDClassifier

使用 SGD 训练的线性分类器 (SVM, 逻辑回归等)。

Notes

Perceptron 是一种分类算法,与 SGDClassifier 共享相同的底层实现。 事实上, Perceptron() 等同于 SGDClassifier(loss="perceptron", eta0=1, learning_rate="constant", penalty=None)

References

https://en.wikipedia.org/wiki/Perceptron 及其参考文献。

Examples

>>> from sklearn.datasets import load_digits
>>> from sklearn.linear_model import Perceptron
>>> X, y = load_digits(return_X_y=True)
>>> clf = Perceptron(tol=1e-3, random_state=0)
>>> clf.fit(X, y)
Perceptron()
>>> clf.score(X, y)
0.939...
decision_function(X)#

预测样本的置信度分数。

样本的置信度分数与其到超平面的有符号距离成正比。

Parameters:
X{array-like, sparse matrix},形状为 (n_samples, n_features)

我们想要获取置信度分数的数据矩阵。

Returns:
scoresndarray,形状为 (n_samples,) 或 (n_samples, n_classes)

每个 (n_samples, n_classes) 组合的置信度分数。在二分类情况下, self.classes_[1] 的置信度分数,其中 >0 表示会预测这个类别。

densify()#

将系数矩阵转换为密集数组格式。

coef_ 成员(回)转换为 numpy.ndarray。这是 coef_ 的默认格式,并且是拟合所必需的,因此只有在之前已经稀疏化的模型上才需要调用此方法;否则,它是一个空操作。

Returns:
self

拟合的估计器。

fit(X, y, coef_init=None, intercept_init=None, sample_weight=None)#

拟合带有随机梯度下降的线性模型。

Parameters:
X{array-like, sparse matrix}, shape (n_samples, n_features)

训练数据。

yndarray of shape (n_samples,)

目标值。

coef_initndarray of shape (n_classes, n_features), default=None

用于优化预热启动的初始系数。

intercept_initndarray of shape (n_classes,), default=None

用于优化预热启动的初始截距。

sample_weightarray-like, shape (n_samples,), default=None

应用于单个样本的权重。 如果未提供,则假设均匀权重。如果指定了class_weight(通过构造函数传递),这些权重将与class_weight相乘。

Returns:
selfobject

返回self的一个实例。

get_metadata_routing()#

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

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

Returns:
routingMetadataRequest

MetadataRequest 封装的 路由信息。

get_params(deep=True)#

获取此估计器的参数。

Parameters:
deepbool, 默认=True

如果为True,将返回此估计器和包含的子对象(也是估计器)的参数。

Returns:
paramsdict

参数名称映射到它们的值。

partial_fit(X, y, classes=None, sample_weight=None)#

执行一次给定样本的随机梯度下降。

内部使用 max_iter = 1 。因此,不能保证在调用一次后达到成本函数的最小值。诸如目标收敛、提前停止和学习率调整等问题应由用户处理。

Parameters:
X{array-like, sparse matrix}, shape (n_samples, n_features)

训练数据的子集。

yndarray of shape (n_samples,)

目标值的子集。

classesndarray of shape (n_classes,), default=None

所有调用partial_fit的类别。 可以通过 np.unique(y_all) 获得,其中y_all是整个数据集的目标向量。 此参数在第一次调用partial_fit时是必需的,在后续调用中可以省略。 请注意,y不需要包含 classes 中的所有标签。

sample_weightarray-like, shape (n_samples,), default=None

应用于单个样本的权重。 如果未提供,则假设均匀权重。

Returns:
selfobject

返回self的实例。

predict(X)#

预测X中的样本类别标签。

Parameters:
X{array-like, sparse matrix},形状为 (n_samples, n_features)

我们希望获取预测的数据矩阵。

Returns:
y_predndarray,形状为 (n_samples,)

包含每个样本类别标签的向量。

score(X, y, sample_weight=None)#

返回给定测试数据和标签的平均准确率。

在多标签分类中,这是子集准确率,这是一个严格的指标,因为你要求每个样本的每个标签集都被正确预测。

Parameters:
X形状为 (n_samples, n_features) 的类数组

测试样本。

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

` X`的真实标签。

sample_weight形状为 (n_samples,) 的类数组,默认=None

样本权重。

Returns:
scorefloat

self.predict(X) 相对于 y 的平均准确率。

set_fit_request(*, coef_init: bool | None | str = '$UNCHANGED$', intercept_init: bool | None | str = '$UNCHANGED$', sample_weight: bool | None | str = '$UNCHANGED$') Perceptron#

Request metadata passed to the fit method.

Note that this method is only relevant if enable_metadata_routing=True (see sklearn.set_config ). Please see User Guide on how the routing mechanism works.

The options for each parameter are:

  • True : metadata is requested, and passed to fit if provided. The request is ignored if metadata is not provided.

  • False : metadata is not requested and the meta-estimator will not pass it to fit .

  • None : metadata is not requested, and the meta-estimator will raise an error if the user provides it.

  • str : metadata should be passed to the meta-estimator with this given alias instead of the original name.

The default ( sklearn.utils.metadata_routing.UNCHANGED ) retains the existing request. This allows you to change the request for some parameters and not others.

Added in version 1.3.

Note

This method is only relevant if this estimator is used as a sub-estimator of a meta-estimator, e.g. used inside a Pipeline . Otherwise it has no effect.

Parameters:
coef_initstr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED

Metadata routing for coef_init parameter in fit .

intercept_initstr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED

Metadata routing for intercept_init parameter in fit .

sample_weightstr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED

Metadata routing for sample_weight parameter in fit .

Returns:
selfobject

The updated object.

set_params(**params)#

设置此估计器的参数。

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

Parameters:
**paramsdict

估计器参数。

Returns:
selfestimator instance

估计器实例。

set_partial_fit_request(*, classes: bool | None | str = '$UNCHANGED$', sample_weight: bool | None | str = '$UNCHANGED$') Perceptron#

Request metadata passed to the partial_fit method.

Note that this method is only relevant if enable_metadata_routing=True (see sklearn.set_config ). Please see User Guide on how the routing mechanism works.

The options for each parameter are:

  • True : metadata is requested, and passed to partial_fit if provided. The request is ignored if metadata is not provided.

  • False : metadata is not requested and the meta-estimator will not pass it to partial_fit .

  • None : metadata is not requested, and the meta-estimator will raise an error if the user provides it.

  • str : metadata should be passed to the meta-estimator with this given alias instead of the original name.

The default ( sklearn.utils.metadata_routing.UNCHANGED ) retains the existing request. This allows you to change the request for some parameters and not others.

Added in version 1.3.

Note

This method is only relevant if this estimator is used as a sub-estimator of a meta-estimator, e.g. used inside a Pipeline . Otherwise it has no effect.

Parameters:
classesstr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED

Metadata routing for classes parameter in partial_fit .

sample_weightstr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED

Metadata routing for sample_weight parameter in partial_fit .

Returns:
selfobject

The updated object.

set_score_request(*, sample_weight: bool | None | str = '$UNCHANGED$') Perceptron#

Request metadata passed to the score method.

Note that this method is only relevant if enable_metadata_routing=True (see sklearn.set_config ). Please see User Guide on how the routing mechanism works.

The options for each parameter are:

  • True : metadata is requested, and passed to score if provided. The request is ignored if metadata is not provided.

  • False : metadata is not requested and the meta-estimator will not pass it to score .

  • None : metadata is not requested, and the meta-estimator will raise an error if the user provides it.

  • str : metadata should be passed to the meta-estimator with this given alias instead of the original name.

The default ( sklearn.utils.metadata_routing.UNCHANGED ) retains the existing request. This allows you to change the request for some parameters and not others.

Added in version 1.3.

Note

This method is only relevant if this estimator is used as a sub-estimator of a meta-estimator, e.g. used inside a Pipeline . Otherwise it has no effect.

Parameters:
sample_weightstr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED

Metadata routing for sample_weight parameter in score .

Returns:
selfobject

The updated object.

sparsify()#

将系数矩阵转换为稀疏格式。

coef_ 成员转换为 scipy.sparse 矩阵,对于 L1 正则化模型来说,这种格式在内存和存储方面比通常的 numpy.ndarray 表示更高效。

intercept_ 成员不会被转换。

Returns:
self

拟合的估计器。

Notes

对于非稀疏模型,即当 coef_ 中没有很多零时,这实际上可能会增加内存使用量,因此请谨慎使用此方法。一个经验法则是,零元素的数量,可以通过 (coef_ == 0).sum() 计算,必须超过 50% 才能提供显著的效益。

调用此方法后,进一步使用 partial_fit 方法(如果有)进行拟合将不起作用,直到您调用 densify。