uniqueness_data_check#
数据检查,用于检查输入中是否存在对于分类问题来说过于唯一或对于回归问题来说不够唯一的列。
模块内容#
类摘要#
检查输入中是否存在对于分类问题来说过于唯一或对于回归问题来说不够唯一的列。 |
目录#
- class evalml.data_checks.uniqueness_data_check.UniquenessDataCheck(problem_type, threshold=0.5)[source]#
检查输入中是否存在对于分类问题来说过于唯一或对于回归问题来说不够唯一的列。
- 参数
problem_type (str or ProblemTypes) – 要进行数据检查的特定问题类型。例如:“二分类”、“多分类”、“回归”、“时间序列回归”
threshold (float) – 对于分类问题,设定唯一性的上限阈值;对于回归问题,设定唯一性的下限阈值。默认为 0.50。
方法
返回描述数据检查的名称。
计算提供字段的唯一性分数。计算中不将 NaN 值视为唯一值。
检查输入中是否存在对于分类问题来说过于唯一或对于回归问题来说不够唯一的列。
- name(cls)#
返回描述数据检查的名称。
- static uniqueness_score(col, drop_na=True)[source]#
计算提供字段的唯一性分数。计算中不将 NaN 值视为唯一值。
基于赫芬达尔-赫希曼指数。
- 参数
col (pd.Series) – 特征值。
drop_na (bool) – 计算唯一性分数时是否丢弃空值。默认为 True。
- 返回值
唯一性分数。
- 返回值类型
(float)
- validate(self, X, y=None)[source]#
检查输入中是否存在对于分类问题来说过于唯一或对于回归问题来说不够唯一的列。
- 参数
X (pd.DataFrame, np.ndarray) – 特征。
y (pd.Series, np.ndarray) – 被忽略。默认为 None。
- 返回值
- 如果存在过于唯一或不够唯一的列,则返回带有 DataCheckWarning 的字典。
字典
- 返回值类型
dict
示例
>>> import pandas as pd
因为问题类型是回归,列“regression_not_unique_enough”因只有一个值而触发警告。
>>> df = pd.DataFrame({ ... "regression_unique_enough": [float(x) for x in range(100)], ... "regression_not_unique_enough": [float(1) for x in range(100)] ... }) ... >>> uniqueness_check = UniquenessDataCheck(problem_type="regression", threshold=0.8) >>> assert uniqueness_check.validate(df) == [ ... { ... "message": "Input columns 'regression_not_unique_enough' for regression problem type are not unique enough.", ... "data_check_name": "UniquenessDataCheck", ... "level": "warning", ... "code": "NOT_UNIQUE_ENOUGH", ... "details": {"columns": ["regression_not_unique_enough"], "uniqueness_score": {"regression_not_unique_enough": 0.0}, "rows": None}, ... "action_options": [ ... { ... "code": "DROP_COL", ... "parameters": {}, ... "data_check_name": "UniquenessDataCheck", ... "metadata": {"columns": ["regression_not_unique_enough"], "rows": None} ... } ... ] ... } ... ]
对于多分类,列“regression_unique_enough”具有太多唯一值,将引发适当的警告。 >>> y = pd.Series([1, 1, 1, 2, 2, 3, 3, 3]) >>> uniqueness_check = UniquenessDataCheck(problem_type=”multiclass”, threshold=0.8) >>> assert uniqueness_check.validate(df) == [ … { … “message”: “对于多分类问题,输入列 'regression_unique_enough' 过于唯一。”, … “data_check_name”: “UniquenessDataCheck”, … “level”: “warning”, … “details”: { … “columns”: [“regression_unique_enough”], … “rows”: None, … “uniqueness_score”: {“regression_unique_enough”: 0.99} … }, … “code”: “TOO_UNIQUE”, … “action_options”: [ … { … “code”: “DROP_COL”, … “data_check_name”: “UniquenessDataCheck”, … “parameters”: {}, … “metadata”: {“columns”: [“regression_unique_enough”], “rows”: None} … } … ] … } … ] … >>> assert UniquenessDataCheck.uniqueness_score(y) == 0.65625
- evalml.data_checks.uniqueness_data_check.warning_not_unique_enough = 对于 {} 问题 类型,输入列 {} 不够唯一。#
- evalml.data_checks.uniqueness_data_check.warning_too_unique = 对于 {} 问题 类型,输入列 {} 过于唯一。#