binary_classification_pipeline#

所有二元分类管道的管道子类。

模块内容#

类摘要#

BinaryClassificationPipeline

所有二元分类管道的管道子类。

目录#

class evalml.pipelines.binary_classification_pipeline.BinaryClassificationPipeline(component_graph, parameters=None, custom_name=None, random_seed=0)[来源]#

所有二元分类管道的管道子类。

参数
  • component_graph (ComponentGraph, list, dict) – ComponentGraph 实例、按顺序排列的组件列表或组件字典。接受列表中的字符串或 ComponentBase 子类。请注意,当列表中指定重复组件时,重复组件名称将根据其在列表中的索引进行修改。例如,组件图 [Imputer, One Hot Encoder, Imputer, Logistic Regression Classifier] 的名称将是 [“Imputer”, “One Hot Encoder”, “Imputer_2”, “Logistic Regression Classifier”]

  • parameters (dict) – 以组件名称为键,以该组件参数字典为值的字典。空字典或 None 表示使用组件参数的所有默认值。默认为 None。

  • custom_name (str) – 管道的自定义名称。默认为 None。

  • random_seed (int) – 随机数生成器的种子。默认为 0。

示例

>>> pipeline = BinaryClassificationPipeline(component_graph=["Simple Imputer", "Logistic Regression Classifier"],
...                                         parameters={"Logistic Regression Classifier": {"penalty": "elasticnet",
...                                                                                        "solver": "liblinear"}},
...                                         custom_name="My Binary Pipeline")
...
>>> assert pipeline.custom_name == "My Binary Pipeline"
>>> assert pipeline.component_graph.component_dict.keys() == {'Simple Imputer', 'Logistic Regression Classifier'}

管道参数将从每个组件的默认参数中选取,除非传入了如上所述的特定参数。

>>> assert pipeline.parameters == {
...     'Simple Imputer': {'impute_strategy': 'most_frequent', 'fill_value': None},
...     'Logistic Regression Classifier': {'penalty': 'elasticnet',
...                                        'C': 1.0,
...                                        'n_jobs': -1,
...                                        'multi_class': 'auto',
...                                        'solver': 'liblinear'}}

属性

problem_type

ProblemTypes.BINARY

方法

can_tune_threshold_with_objective

确定二元分类管道的阈值是否可调。

classes_

获取管道的类名。在管道拟合之前将返回 None。

clone

构造一个具有相同组件、参数和随机种子新管道。

create_objectives

从字符串列表或目标类创建目标实例。

custom_name

管道的自定义名称。

describe

输出管道详细信息,包括组件参数。

feature_importance

与每个特征相关的重要性。特征选择丢弃的特征会被排除。

fit

构建分类模型。对于字符串和分类目标,类将按 sorted(set(y)) 排序,然后映射到 0 到 n_classes-1 之间的值。

fit_transform

如果所有组件都是 Transformer,则拟合并转换组件图中的所有组件。

get_component

按名称返回组件。

get_hyperparameter_ranges

以字典形式返回所有组件的超参数范围。

graph

生成表示管道图的图像。

graph_dict

生成一个字典,其中节点由组件名称和参数组成,边详细说明组件关系。在大多数情况下,该字典可进行 JSON 序列化。

graph_feature_importance

生成管道特征重要性的条形图。

inverse_transform

以相反顺序将组件 inverse_transform 方法应用于估计器预测。

load

从文件路径加载管道。

model_family

返回此管道的模型族。

name

管道名称。

new

构造一个具有相同组件图但参数集不同的新管道实例。不要与 python 的 __new__ 方法混淆。

optimize_threshold

根据要使用的目标优化管道阈值。仅用于阈值可调的二元问题。

parameters

此管道的参数字典。

predict

使用选定的特征进行预测。

predict_proba

对标签进行概率估计。假设索引 1 处的列表示正标签情况。

save

将管道保存到文件路径。

score

评估模型在目标上的性能。

summary

管道结构的简短摘要,描述了使用的组件列表。

threshold

用于进行预测的阈值。默认为 None。

transform

转换输入。

transform_all_but_final

通过应用所有预处理组件来转换数据。

can_tune_threshold_with_objective(self, objective)#

确定二元分类管道的阈值是否可调。

参数

objective (ObjectiveBase) – 主要的 AutoMLSearch 目标。

返回

如果管道阈值可调,则为 True。

返回类型

bool

property classes_(self)#

获取管道的类名。在管道拟合之前将返回 None。

clone(self)#

构造一个具有相同组件、参数和随机种子新管道。

返回

此管道的一个新实例,具有相同的组件、参数和随机种子。

static create_objectives(objectives)#

从字符串列表或目标类创建目标实例。

property custom_name(self)#

管道的自定义名称。

describe(self, return_dict=False)#

输出管道详细信息,包括组件参数。

参数

return_dict (bool) – 如果为 True,返回关于管道信息的字典。默认为 False。

返回

如果 return_dict 为 True,则返回所有组件参数的字典,否则返回 None。

返回类型

dict

property feature_importance(self)#

与每个特征相关的重要性。特征选择丢弃的特征会被排除。

返回

特征名称及其对应的重要性

返回类型

pd.DataFrame

fit(self, X, y)#

构建分类模型。对于字符串和分类目标,类将按 sorted(set(y)) 排序,然后映射到 0 到 n_classes-1 之间的值。

参数
  • X (pd.DataFrame or np.ndarray) – 形状为 [n_samples, n_features] 的输入训练数据

  • y (pd.Series, np.ndarray) – 长度为 [n_samples] 的目标训练标签

返回

self

引发
  • ValueError – 如果 y 中唯一类的数量不适合管道类型。

  • TypeError – 如果 dtype 为布尔型但 series 中存在 pd.NA。

  • Exception – 对于所有其他异常。

fit_transform(self, X, y)#

如果所有组件都是 Transformer,则拟合并转换组件图中的所有组件。

参数
  • X (pd.DataFrame) – 形状为 [n_samples, n_features] 的输入特征。

  • y (pd.Series) – 长度为 [n_samples] 的目标数据。

返回

转换后的输出。

返回类型

pd.DataFrame

引发

ValueError – 如果最后一个组件是 Estimator。

get_component(self, name)#

按名称返回组件。

参数

name (str) – 组件名称。

返回

要返回的组件

返回类型

Component

get_hyperparameter_ranges(self, custom_hyperparameters)#

以字典形式返回所有组件的超参数范围。

参数

custom_hyperparameters (dict) – 管道的自定义超参数。

返回

管道中每个组件的超参数范围字典。

返回类型

dict

graph(self, filepath=None)#

生成表示管道图的图像。

参数

filepath (str, optional) – 图应保存到的路径。如果设置为 None(默认值),则不会保存图。

返回

可在 Jupyter notebook 中直接显示的图对象。

返回类型

graphviz.Digraph

引发
  • RuntimeError – 如果未安装 graphviz。

  • ValueError – 如果路径不可写。

graph_dict(self)#

生成一个字典,其中节点由组件名称和参数组成,边详细说明组件关系。在大多数情况下,该字典可进行 JSON 序列化。

x_edges 指定特征数据从哪个组件传递过来。y_edges 指定目标数据从哪个组件传递过来。这可用于在各种可视化工具中构建图。Template: {“Nodes”: {“component_name”: {“Name”: class_name, “Parameters”: parameters_attributes}, …}}, “x_edges”: [[from_component_name, to_component_name], [from_component_name, to_component_name], …], “y_edges”: [[from_component_name, to_component_name], [from_component_name, to_component_name], …]}

返回

表示 DAG 结构的字典。

返回类型

dag_dict (dict)

graph_feature_importance(self, importance_threshold=0)#

生成管道特征重要性的条形图。

参数

importance_threshold (float, optional) – 如果提供,绘制置换重要性绝对值大于 importance_threshold 的特征图。默认为零。

返回

显示特征及其对应重要性的条形图。

返回类型

plotly.Figure

引发

ValueError – 如果 importance threshold 无效。

inverse_transform(self, y)#

以相反顺序将组件 inverse_transform 方法应用于估计器预测。

实现了 inverse_transform 的组件有 PolynomialDecomposer、LogTransformer、LabelEncoder (待定)。

参数

y (pd.Series) – 最终组件特征。

返回

目标的逆变换。

返回类型

pd.Series

static load(file_path: Union[str, io.BytesIO])#

从文件路径加载管道。

参数

file_path (str|BytesIO) – 加载文件路径或 BytesIO 对象。

返回

PipelineBase 对象

property model_family(self)#

返回此管道的模型族。

property name(self)#

管道名称。

new(self, parameters, random_seed=0)#

构造一个具有相同组件图但参数集不同的新管道实例。不要与 python 的 __new__ 方法混淆。

参数
  • parameters (dict) – 以组件名称为键,以该组件参数字典为值的字典。空字典或 None 表示使用组件参数的所有默认值。默认为 None。

  • random_seed (int) – 随机数生成器的种子。默认为 0。

返回

此管道的一个新实例,具有相同的组件。

optimize_threshold(self, X, y, y_pred_proba, objective)#

根据要使用的目标优化管道阈值。仅用于阈值可调的二元问题。

参数
  • X (pd.DataFrame) – 输入特征。

  • y (pd.Series) – 输入目标值。

  • y_pred_proba (pd.Series) – 管道输出的目标预测概率。

  • objective (ObjectiveBase) – 用于设置阈值的目标。必须具有可调阈值。

引发

ValueError – 如果目标不可优化。

property parameters(self)#

此管道的参数字典。

返回

所有组件参数的字典。

返回类型

dict

predict(self, X, objective=None, X_train=None, y_train=None)#

使用选定的特征进行预测。

注意:我们首先将 y 转换为 int,以处理计算预测可能返回的布尔值,否则如果我们原始目标是整数,我们将无法转换这些布尔值。

参数
  • X (pd.DataFrame) – 形状为 [n_samples, n_features] 的数据。

  • objective (Object or string) – 用于进行预测的目标。

  • X_train (pd.DataFrame) – 训练数据。忽略。仅用于时间序列。

  • y_train (pd.Series) – 训练标签。忽略。仅用于时间序列。

返回

估计的标签。

返回类型

pd.Series

predict_proba(self, X, X_train=None, y_train=None)[来源]#

对标签进行概率估计。假设索引 1 处的列表示正标签情况。

参数
  • X (pd.DataFrame or np.ndarray) – 形状为 [n_samples, n_features] 的数据

  • X_train (pd.DataFrame or np.ndarray or None) – 训练数据。忽略。仅用于时间序列。

  • y_train (pd.Series or None) – 训练标签。忽略。仅用于时间序列。

返回

概率估计

返回类型

pd.Series

save(self, file_path, pickle_protocol=cloudpickle.DEFAULT_PROTOCOL)#

将管道保存到文件路径。

参数
  • file_path (str) – 保存文件的位置。

  • pickle_protocol (int) – pickle 数据流格式。

score(self, X, y, objectives, X_train=None, y_train=None)#

评估模型在目标上的性能。

参数
  • X (pd.DataFrame) – 形状为 [n_samples, n_features] 的数据

  • y (pd.Series) – 长度为 [n_samples] 的真实标签

  • objectives (list) – 要评分的目标列表

  • X_train (pd.DataFrame) – 训练数据。忽略。仅用于时间序列。

  • y_train (pd.Series) – 训练标签。忽略。仅用于时间序列。

返回

目标分数的有序字典。

返回类型

dict

property summary(self)#

管道结构的简短摘要,描述了使用的组件列表。

示例:带有 Simple Imputer + One Hot Encoder 的 Logistic Regression Classifier

返回

描述管道结构的字符串。

property threshold(self)#

用于进行预测的阈值。默认为 None。

transform(self, X, y=None)#

转换输入。

参数
  • X (pd.DataFrame, or np.ndarray) – 形状为 [n_samples, n_features] 的数据。

  • y (pd.Series) – 长度为 [n_samples] 的目标数据。默认为 None。

返回

转换后的输出。

返回类型

pd.DataFrame

transform_all_but_final(self, X, y=None, X_train=None, y_train=None)#

通过应用所有预处理组件来转换数据。

参数
  • X (pd.DataFrame) – 要转换到管道的输入数据。

  • y (pd.Series or None) – 与 X 对应的目标。可选。

  • X_train (pd.DataFrame or np.ndarray or None) – 训练数据。仅用于时间序列。

  • y_train (pd.Series or None) – 训练标签。仅用于时间序列。

返回

新的转换特征。

返回类型

pd.DataFrame