全局配置选项#
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_threshold
和 numeric_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
,这意味着默认情况下不应将数值列推断为类别型。如果此设置被赋予介于 0
和 1
之间的浮点值,则其行为与 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_regex
和 ipv6_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。