全局配置选项#

Woodwork 包含全局配置选项,您可以使用这些选项来控制 Woodwork 的某些行为。本指南概述了如何使用这些选项,包括查看当前设置和更新配置值。

查看配置设置#

为了演示如何显示当前的配置选项,请跟随以下步骤。

导入 Woodwork 后,您可以使用 ww.config 查看选项,如下所示。

[1]:
import woodwork as ww

ww.config
[1]:
Woodwork Global Config Settings
-------------------------------
categorical_threshold: 0.2
numeric_categorical_threshold: None
email_inference_regex: (^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$)
url_inference_regex: (http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+)
ipv4_inference_regex: (^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$)
ipv6_inference_regex: (([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))
phone_inference_regex: (?:\+?(0{2})?1[-.\s●]?)?\(?([2-9][0-9]{2})\)?[-\.\s●]?([2-9][0-9]{2})[-\.\s●]?([0-9]{4})$
postal_code_inference_regex: ^[0-9]{5}(?:-[0-9]{4})?$
nan_values: ['', ' ', None, nan, NaT, 'None', 'NONE', 'none', 'NULL', 'Null', 'null', 'NAN', 'NaN', 'Nan', 'nan', 'NA', 'na', 'N/A', 'n/a', 'n/A', 'N/a', '<NA>', '<N/A>', '<n/a>', '<na>']
frequence_inference_window_length: 15
frequence_inference_threshold: 0.9
correlation_metrics: ['mutual_info', 'pearson', 'spearman', 'max', 'all']
medcouple_threshold: 0.3
medcouple_sample_size: 10000
boolean_inference_strings: {frozenset({'n', 'y'}), frozenset({'false', 'true'}), frozenset({'f', 't'}), frozenset({'no', 'yes'})}
boolean_transform_mappings: {'yes': True, 'no': False, 'y': True, 'n': False, 'true': True, 'false': False, 't': True, 'f': False}
boolean_inference_ints: {}

ww.config 的输出列出了每个可用的配置变量及其当前设置。在上面的输出中,可以看到 categorical_thresholdnumeric_categorical_threshold 配置变量的设置。

更新配置设置#

更新配置变量只需调用 ww.config.set_option 函数即可完成。此函数需要两个参数:要更新的配置变量名称和要设置的新值。

例如,将 categorical_threshold 配置变量的值更新为 0.5,而不是默认值。

[2]:
ww.config.set_option("categorical_threshold", 0.5)
ww.config
[2]:
Woodwork Global Config Settings
-------------------------------
categorical_threshold: 0.5
numeric_categorical_threshold: None
email_inference_regex: (^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$)
url_inference_regex: (http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+)
ipv4_inference_regex: (^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$)
ipv6_inference_regex: (([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))
phone_inference_regex: (?:\+?(0{2})?1[-.\s●]?)?\(?([2-9][0-9]{2})\)?[-\.\s●]?([2-9][0-9]{2})[-\.\s●]?([0-9]{4})$
postal_code_inference_regex: ^[0-9]{5}(?:-[0-9]{4})?$
nan_values: ['', ' ', None, nan, NaT, 'None', 'NONE', 'none', 'NULL', 'Null', 'null', 'NAN', 'NaN', 'Nan', 'nan', 'NA', 'na', 'N/A', 'n/a', 'n/A', 'N/a', '<NA>', '<N/A>', '<n/a>', '<na>']
frequence_inference_window_length: 15
frequence_inference_threshold: 0.9
correlation_metrics: ['mutual_info', 'pearson', 'spearman', 'max', 'all']
medcouple_threshold: 0.3
medcouple_sample_size: 10000
boolean_inference_strings: {frozenset({'n', 'y'}), frozenset({'false', 'true'}), frozenset({'f', 't'}), frozenset({'no', 'yes'})}
boolean_transform_mappings: {'yes': True, 'no': False, 'y': True, 'n': False, 'true': True, 'false': False, 't': True, 'f': False}
boolean_inference_ints: {}

从上面的输出可以看出,categorical_threshold 配置变量的值已更新为 0.5

临时更新配置设置#

还可以使用 ww.config.with_options 在 with 块的上下文中临时更新设置。

[3]:
with ww.config.with_options(categorical_threshold=0.7):
    # Do something
    print("Temporary settings:\n")
    print(repr(ww.config), "\n")

print("Restored settings:\n")
print(repr(ww.config))
Temporary settings:

Woodwork Global Config Settings
-------------------------------
categorical_threshold: 0.7
numeric_categorical_threshold: None
email_inference_regex: (^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$)
url_inference_regex: (http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+)
ipv4_inference_regex: (^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$)
ipv6_inference_regex: (([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))
phone_inference_regex: (?:\+?(0{2})?1[-.\s●]?)?\(?([2-9][0-9]{2})\)?[-\.\s●]?([2-9][0-9]{2})[-\.\s●]?([0-9]{4})$
postal_code_inference_regex: ^[0-9]{5}(?:-[0-9]{4})?$
nan_values: ['', ' ', None, nan, NaT, 'None', 'NONE', 'none', 'NULL', 'Null', 'null', 'NAN', 'NaN', 'Nan', 'nan', 'NA', 'na', 'N/A', 'n/a', 'n/A', 'N/a', '<NA>', '<N/A>', '<n/a>', '<na>']
frequence_inference_window_length: 15
frequence_inference_threshold: 0.9
correlation_metrics: ['mutual_info', 'pearson', 'spearman', 'max', 'all']
medcouple_threshold: 0.3
medcouple_sample_size: 10000
boolean_inference_strings: {frozenset({'n', 'y'}), frozenset({'false', 'true'}), frozenset({'f', 't'}), frozenset({'no', 'yes'})}
boolean_transform_mappings: {'yes': True, 'no': False, 'y': True, 'n': False, 'true': True, 'false': False, 't': True, 'f': False}
boolean_inference_ints: {}

Restored settings:

Woodwork Global Config Settings
-------------------------------
categorical_threshold: 0.5
numeric_categorical_threshold: None
email_inference_regex: (^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$)
url_inference_regex: (http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+)
ipv4_inference_regex: (^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$)
ipv6_inference_regex: (([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))
phone_inference_regex: (?:\+?(0{2})?1[-.\s●]?)?\(?([2-9][0-9]{2})\)?[-\.\s●]?([2-9][0-9]{2})[-\.\s●]?([0-9]{4})$
postal_code_inference_regex: ^[0-9]{5}(?:-[0-9]{4})?$
nan_values: ['', ' ', None, nan, NaT, 'None', 'NONE', 'none', 'NULL', 'Null', 'null', 'NAN', 'NaN', 'Nan', 'nan', 'NA', 'na', 'N/A', 'n/a', 'n/A', 'N/a', '<NA>', '<N/A>', '<n/a>', '<na>']
frequence_inference_window_length: 15
frequence_inference_threshold: 0.9
correlation_metrics: ['mutual_info', 'pearson', 'spearman', 'max', 'all']
medcouple_threshold: 0.3
medcouple_sample_size: 10000
boolean_inference_strings: {frozenset({'n', 'y'}), frozenset({'false', 'true'}), frozenset({'f', 't'}), frozenset({'no', 'yes'})}
boolean_transform_mappings: {'yes': True, 'no': False, 'y': True, 'n': False, 'true': True, 'false': False, 't': True, 'f': False}
boolean_inference_ints: {}

获取特定配置变量的值#

如果您需要访问为特定配置变量设置的值,可以使用 ww.config.get_option 函数来访问它,并传入您想要获取值的配置变量名称。

[4]:
ww.config.get_option("categorical_threshold")
[4]:
0.5

重置为默认值#

可以使用 ww.config.reset_option 函数将配置变量重置为其默认值,并传入要重置的变量名称。

例如,将 categorical_threshold 配置变量重置为其默认值。

[5]:
ww.config.reset_option("categorical_threshold")
ww.config
[5]:
Woodwork Global Config Settings
-------------------------------
categorical_threshold: 0.2
numeric_categorical_threshold: None
email_inference_regex: (^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$)
url_inference_regex: (http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+)
ipv4_inference_regex: (^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$)
ipv6_inference_regex: (([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))
phone_inference_regex: (?:\+?(0{2})?1[-.\s●]?)?\(?([2-9][0-9]{2})\)?[-\.\s●]?([2-9][0-9]{2})[-\.\s●]?([0-9]{4})$
postal_code_inference_regex: ^[0-9]{5}(?:-[0-9]{4})?$
nan_values: ['', ' ', None, nan, NaT, 'None', 'NONE', 'none', 'NULL', 'Null', 'null', 'NAN', 'NaN', 'Nan', 'nan', 'NA', 'na', 'N/A', 'n/a', 'n/A', 'N/a', '<NA>', '<N/A>', '<n/a>', '<na>']
frequence_inference_window_length: 15
frequence_inference_threshold: 0.9
correlation_metrics: ['mutual_info', 'pearson', 'spearman', 'max', 'all']
medcouple_threshold: 0.3
medcouple_sample_size: 10000
boolean_inference_strings: {frozenset({'n', 'y'}), frozenset({'false', 'true'}), frozenset({'f', 't'}), frozenset({'no', 'yes'})}
boolean_transform_mappings: {'yes': True, 'no': False, 'y': True, 'n': False, 'true': True, 'false': False, 't': True, 'f': False}
boolean_inference_ints: {}

可用配置设置#

本节概述了 Woodwork 中可以设置的当前配置选项。

类别阈值#

categorical_threshold 配置变量有助于在类型推断期间控制 Categorical 类型与其他逻辑类型之间的区分。更具体地说,此阈值表示在一个系列中,唯一值计数与总值计数(排除 nan 值)的最大可接受比例,以便该系列被推断为类别型。换句话说,如果系列中的值由相对较少的一组唯一值完全解释,则该系列为类别型。categorical_threshold 配置变量默认为 0.2。这意味着,默认情况下,如果唯一值计数占总值计数的 20%,则可以将该系列推断为类别型。

数值类别阈值#

Woodwork 提供了将数值列推断为 Categorical 逻辑类型的选项,前提是它们的唯一值足够少。numeric_categorical_threshold 控制此行为。numeric_categorical_threshold 的默认值为 None,这意味着默认情况下不应将数值列推断为类别型。如果此设置被赋予介于 01 之间的浮点值,则其行为与 categorical_threshold 设置相同,但仅适用于具有数值数据类型(浮点型或整型)的列。

电子邮件推断正则表达式#

Woodwork 提供了将字符串列推断为 EmailAddress 逻辑类型的选项,前提是有效(非缺失)行的代表性样本都与给定的正则表达式匹配。email_inference_regex 配置变量允许用户设置在此匹配过程中使用的正则表达式。默认正则表达式为 r"(^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$)"(取自 https://emailregex.com/)。

URL 推断正则表达式#

Woodwork 提供了将字符串列推断为 URL 逻辑类型的选项,前提是有效(非缺失)行的代表性样本都与给定的正则表达式匹配。url_inference_regex 配置变量允许用户设置在此匹配过程中使用的正则表达式。默认正则表达式为 r\"(http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\\(\\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+)\"(取自 https://urlregex.com/)。

IP 地址推断正则表达式#

Woodwork 提供了将字符串列推断为 IPAddress 逻辑类型的选项,前提是有效(非缺失)行的代表性样本都与给定的正则表达式匹配。ipv4_inference_regexipv6_inference_regex 配置变量允许用户设置在此匹配过程中使用的正则表达式。ipv4_inference_regex 的默认值取自 https://ipregex.com/,而 ipv6_inference_regex 的默认值取自 https://ihateregex.io/expr/ipv6/

频率推断窗口长度#

Woodwork 提供了对具有时间逻辑类型的列进行频率推断的选项。frequence_inference_window_length 配置对象用于确定推断过程中使用的滑动窗口的长度。窗口长度需要足够长才能捕获某些频率,例如工作日(Business Days)、“B”等。默认值为 15。

频率推断阈值#

Woodwork 提供了对具有时间逻辑类型的列进行频率推断的选项。frequence_inference_threshold 配置对象用于确定在所有窗口中,满足给定频率的窗口数量。例如,如果在 100 个窗口中有 91 个窗口符合频率“H”,那么我们可以自信地假设此数据的正确频率是“H”。默认值为 0.9。