感知器#
- 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)[source]#
线性感知器分类器。
该实现是对
SGDClassifier
的封装,通过将loss
和learning_rate
参数固定来实现。SGDClassifier(loss="perceptron", learning_rate="constant")
其他可用参数如下所述,并将转发到
SGDClassifier
。更多信息请阅读用户指南。
- 参数:
- penalty{‘l2’,’l1’,’elasticnet’}, default=None
使用的惩罚项(又称正则化项)。
- alphafloat, default=0.0001
如果使用正则化,则乘以正则化项的常数。
- l1_ratiofloat, default=0.15
弹性网络混合参数,其中
0 <= l1_ratio <= 1
。l1_ratio=0
对应于L2惩罚,l1_ratio=1
对应于L1。仅当penalty='elasticnet'
时使用。版本0.24中添加。
- fit_interceptbool, default=True
是否应该估计截距。如果为False,则假设数据已经中心化。
- max_iterint, default=1000
对训练数据进行的最大迭代次数(又称 epochs)。它只影响
fit
方法的行为,而不影响partial_fit
方法。版本0.19中添加。
- tolfloat 或 None, default=1e-3
停止标准。如果它不是None,则迭代将在(loss > previous_loss - tol)时停止。
版本0.19中添加。
- shufflebool, default=True
每次迭代后是否应打乱训练数据。
- verboseint, default=0
详细程度。
- eta0float, default=1
更新乘以的常数。
- n_jobsint, default=None
用于执行OVA(一对多,用于多分类问题)计算的CPU数量。
None
表示1(除非在joblib.parallel_backend
上下文中)。-1
表示使用所有处理器。更多详情请参见词汇表。- random_stateint, RandomState 实例或 None, default=0
当
shuffle
设置为True
时,用于打乱训练数据。传递一个整数以在多次函数调用中获得可重复的输出。参见词汇表。- early_stoppingbool, default=False
是否使用提前停止,当验证分数没有提高时终止训练。如果设置为True,它将自动将训练数据的分层部分作为验证集,并在验证分数在
n_iter_no_change
个连续的epoch中没有提高至少tol
时终止训练。版本0.20中添加。
- validation_fractionfloat, default=0.1
作为提前停止的验证集而保留的训练数据比例。必须在0到1之间。仅当early_stopping为True时使用。
版本0.20中添加。
- n_iter_no_changeint, default=5
在提前停止之前等待没有改进的迭代次数。
版本0.20中添加。
- class_weightdict, {class_label: weight} 或 “balanced”, default=None
类权重拟合参数的预设。
与类相关的权重。如果没有给出,则所有类的权重都应为1。
“balanced”模式使用y的值来自动调整权重,使其与输入数据中类的频率成反比,如
n_samples / (n_classes * np.bincount(y))
。- warm_startbool, default=False
设置为True时,重用先前对拟合的调用的解决方案作为初始化,否则,只需擦除先前的解决方案。参见词汇表。
- 属性:
- classes_ndarray of shape (n_classes,)
唯一的类别标签。
- coef_ndarray 形状为 (1, n_features) 如果 n_classes == 2,否则为 (n_classes, n_features)
分配给特征的权重。
- intercept_ndarray 形状为 (1,) 如果 n_classes == 2,否则为 (n_classes,)
决策函数中的常数。
- n_features_in_int
在 拟合过程中看到的特征数量。
版本0.24中添加。
- feature_names_in_ndarray 形状为 (
n_features_in_
,) 在 拟合过程中看到的特征名称。仅当
X
的特征名称全部为字符串时才定义。1.0 版本新增。
- n_iter_int
达到停止条件的实际迭代次数。对于多类别拟合,它是每个二元拟合的最大值。
- t_int
训练期间执行的权重更新次数。与
(n_iter_ * n_samples + 1)
相同。
另请参见
sklearn.linear_model.SGDClassifier
使用 SGD 训练的线性分类器(SVM、逻辑回归等)。
备注
Perceptron
是一种分类算法,它与SGDClassifier
具有相同的底层实现。事实上,Perceptron()
等效于SGDClassifier(loss="perceptron", eta0=1, learning_rate="constant", penalty=None)
。参考文献
https://en.wikipedia.org/wiki/Perceptron 及其参考文献。
示例
>>> 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)[source]#
预测样本的置信度得分。
样本的置信度得分与其到超平面的带符号距离成正比。
- 参数:
- X形状为 (n_samples, n_features) 的 {array-like, sparse matrix}
我们要获取置信度得分的数矩阵。
- 返回:
- scores形状为 (n_samples,) 或 (n_samples, n_classes) 的 ndarray
每个
(n_samples, n_classes)
组合的置信度得分。在二元情况下,self.classes_[1]
的置信度得分,其中 >0 表示将预测此类别。
- densify()[source]#
将系数矩阵转换为密集数组格式。
将
coef_
成员(返回)转换为 numpy.ndarray。这是coef_
的默认格式,并且是拟合所必需的,因此仅需要对先前已稀疏化的模型调用此方法;否则,它是一个无操作。- 返回:
- self
已拟合的估计器。
- fit(X, y, coef_init=None, intercept_init=None, sample_weight=None)[source]#
使用随机梯度下降拟合线性模型。
- 参数:
- X形状为 (n_samples, n_features) 的 {array-like, sparse matrix}
训练数据。
- y形状为 (n_samples,) 的 ndarray
目标值。
- coef_init形状为 (n_classes, n_features) 的 ndarray,默认为 None
用于预热启动优化的初始系数。
- intercept_init形状为 (n_classes,) 的 ndarray,默认为 None
用于预热启动优化的初始截距。
- sample_weightarray-like,形状为 (n_samples,),默认为 None
应用于各个样本的权重。如果未提供,则假定为均匀权重。如果指定了 class_weight,则这些权重将与 class_weight(通过构造函数传递)相乘。
- 返回:
- self对象
返回 self 的实例。
- get_metadata_routing()[source]#
获取此对象的元数据路由。
请查看 用户指南,了解路由机制的工作原理。
- 返回:
- routingMetadataRequest
一个
MetadataRequest
封装了路由信息。
- get_params(deep=True)[source]#
获取此估计器的参数。
- 参数:
- deepbool,默认为 True
如果为 True,则将返回此估计器和包含的作为估计器的子对象的参数。
- 返回:
- paramsdict
参数名称映射到其值。
- partial_fit(X, y, classes=None, sample_weight=None)[source]#
对给定样本执行一次随机梯度下降。
内部地,此方法使用
max_iter = 1
。因此,不能保证调用一次后就能达到成本函数的最小值。诸如目标收敛、提前停止和学习率调整等问题应由用户处理。- 参数:
- X形状为 (n_samples, n_features) 的 {array-like, sparse matrix}
训练数据的子集。
- y形状为 (n_samples,) 的 ndarray
目标值的子集。
- classes形状为 (n_classes,) 的ndarray,默认值为 None
所有对 partial_fit 的调用的类别。可以通过
np.unique(y_all)
获取,其中 y_all 是整个数据集的目标向量。此参数对于第一次调用 partial_fit 是必需的,在随后的调用中可以省略。请注意,y 不需要包含classes
中的所有标签。- sample_weightarray-like,形状为 (n_samples,),默认为 None
应用于各个样本的权重。如果未提供,则假定为均匀权重。
- 返回:
- self对象
返回 self 的实例。
- predict(X)[source]#
预测 X 中样本的类别标签。
- 参数:
- X形状为 (n_samples, n_features) 的 {array-like, sparse matrix}
我们要获取预测结果的数据矩阵。
- 返回:
- y_pred形状为 (n_samples,) 的ndarray
包含每个样本类别标签的向量。
- score(X, y, sample_weight=None)[source]#
返回给定测试数据和标签的平均准确率。
在多标签分类中,这是子集准确率,这是一个严格的指标,因为您要求每个样本的每个标签集都必须被正确预测。
- 参数:
- X形状为 (n_samples, n_features) 的类数组
测试样本。
- y形状为 (n_samples,) 或 (n_samples, n_outputs) 的类数组
X
的真实标签。- sample_weight形状为 (n_samples,) 的类数组,默认值为 None
样本权重。
- 返回:
- score浮点数
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 [source]#
请求传递给
fit
方法的元数据。请注意,只有当
enable_metadata_routing=True
时,此方法才相关(请参见sklearn.set_config
)。请参阅 用户指南,了解路由机制的工作原理。每个参数的选项为
True
:请求元数据,如果提供则传递给fit
。如果未提供元数据,则忽略请求。False
:不请求元数据,元估计器不会将其传递给fit
。None
:不请求元数据,如果用户提供元数据,则元估计器将引发错误。str
:元数据应使用此给定的别名而不是原始名称传递给元估计器。
默认值(
sklearn.utils.metadata_routing.UNCHANGED
)保留现有的请求。这允许您更改某些参数的请求,而其他参数不变。版本 1.3 中新增。
注意
只有当此估计器用作元估计器的子估计器时,此方法才相关,例如,在
Pipeline
中使用。否则它无效。- 参数:
- coef_initstr、True、False 或 None,默认值为 sklearn.utils.metadata_routing.UNCHANGED
用于
fit
中coef_init
参数的元数据路由。- intercept_initstr、True、False 或 None,默认值为 sklearn.utils.metadata_routing.UNCHANGED
用于
fit
中intercept_init
参数的元数据路由。- sample_weightstr、True、False 或 None,默认值为 sklearn.utils.metadata_routing.UNCHANGED
用于
fit
中sample_weight
参数的元数据路由。
- 返回:
- self对象
更新后的对象。
- set_params(**params)[source]#
设置此估计器的参数。
此方法适用于简单的估计器以及嵌套对象(例如
Pipeline
)。后者具有<component>__<parameter>
形式的参数,因此可以更新嵌套对象的每个组件。- 参数:
- **paramsdict
估计器参数。
- 返回:
- self估计器实例
估计器实例。
- set_partial_fit_request(*, classes: bool | None | str = '$UNCHANGED$', sample_weight: bool | None | str = '$UNCHANGED$') Perceptron [source]#
请求传递给
partial_fit
方法的元数据。请注意,只有当
enable_metadata_routing=True
时,此方法才相关(请参见sklearn.set_config
)。请参阅 用户指南,了解路由机制的工作原理。每个参数的选项为
True
:请求元数据,如果提供则传递给partial_fit
。如果未提供元数据,则忽略请求。False
:不请求元数据,元估计器不会将其传递给partial_fit
。None
:不请求元数据,如果用户提供元数据,则元估计器将引发错误。str
:元数据应使用此给定的别名而不是原始名称传递给元估计器。
默认值(
sklearn.utils.metadata_routing.UNCHANGED
)保留现有的请求。这允许您更改某些参数的请求,而其他参数不变。版本 1.3 中新增。
注意
只有当此估计器用作元估计器的子估计器时,此方法才相关,例如,在
Pipeline
中使用。否则它无效。- 参数:
- classesstr、True、False 或 None,默认值为 sklearn.utils.metadata_routing.UNCHANGED
用于
partial_fit
中classes
参数的元数据路由。- sample_weightstr、True、False 或 None,默认值为 sklearn.utils.metadata_routing.UNCHANGED
用于
partial_fit
中sample_weight
参数的元数据路由。
- 返回:
- self对象
更新后的对象。
- set_score_request(*, sample_weight: bool | None | str = '$UNCHANGED$') Perceptron [source]#
请求传递给
score
方法的元数据。请注意,只有当
enable_metadata_routing=True
时,此方法才相关(请参见sklearn.set_config
)。请参阅 用户指南,了解路由机制的工作原理。每个参数的选项为
True
:请求元数据,如果提供则传递给score
。如果未提供元数据,则忽略请求。False
:不请求元数据,元估计器不会将其传递给score
。None
:不请求元数据,如果用户提供元数据,则元估计器将引发错误。str
:元数据应使用此给定的别名而不是原始名称传递给元估计器。
默认值(
sklearn.utils.metadata_routing.UNCHANGED
)保留现有的请求。这允许您更改某些参数的请求,而其他参数不变。版本 1.3 中新增。
注意
只有当此估计器用作元估计器的子估计器时,此方法才相关,例如,在
Pipeline
中使用。否则它无效。- 参数:
- sample_weightstr、True、False 或 None,默认值为 sklearn.utils.metadata_routing.UNCHANGED
用于
score
中sample_weight
参数的元数据路由。
- 返回:
- self对象
更新后的对象。
- sparsify()[source]#
将系数矩阵转换为稀疏格式。
将
coef_
成员转换为scipy.sparse矩阵。对于L1正则化模型,这比通常的numpy.ndarray表示方式更节省内存和存储空间。intercept_
成员不会被转换。- 返回:
- self
已拟合的估计器。
备注
对于非稀疏模型,即当
coef_
中零元素不多时,这实际上可能会增加内存使用量,因此请谨慎使用此方法。一个经验法则是,零元素的数量(可以使用(coef_ == 0).sum()
计算)必须超过50%,才能获得显著的益处。调用此方法后,使用partial_fit方法(如果有)进行进一步拟合将无法工作,除非您调用densify。