感知器#
- 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。 
 
 
     
