ydata-quality数据质量评估简单介绍

摘要

ydata-quality是一个用于数据质量的库,类似sklearn之于机器学习。通过数据多阶段流程开发评估数据质量。只要你还有可用数据,运行DataQuality(df=my_df).evaluate()代码,便可得到数据的复杂并详细的全面的评估概要。评估的角度主要有以下几个方面:

  1. Duplicates
  2. Missing Values
  3. Labelling
  4. Erroneous Data
  5. Drift Analysis
  6. Data Expectations
  7. Bias & Fairness
  8. Data Relations
ydata-quality用法

【注】以上是对每个模块的简单介绍,具体的用法上面给了git的官方文档。

1、对数据集的整体评估
from ydata_quality import DataQuality
import pandas as pd

df = pd.read_csv(f'../datasets/transformed/census_10k.csv') # load data
dq = DataQuality(df=df) # create the main class that holds all quality modules
results = dq.evaluate() # run the tests

Warnings:
         TOTAL: 5 warning(s)
         Priority 1: 1 warning(s)
         Priority 2: 4 warning(s)

Priority 1 - heavy impact expected:
         * [DUPLICATES - DUPLICATE COLUMNS] Found 1 columns with exactly the same feature values as other columns.
Priority 2 - usage allowed, limited human intelligibility:
         * [DATA RELATIONS - HIGH COLLINEARITY - NUMERICAL] Found 3 numerical variables with high Variance Inflation Factor (VIF>5.0). The variables listed in results are highly collinear with other variables in the dataset. These will make model explainability harder and potentially give way to issues like overfitting. Depending on your end goal you might want to remove the highest VIF variables.
         * [ERRONEOUS DATA - PREDEFINED ERRONEOUS DATA] Found 1960 ED values in the dataset.
         * [DATA RELATIONS - HIGH COLLINEARITY - CATEGORICAL] Found 10 categorical variables with significant collinearity (p-value < 0.05). The variables listed in results are highly collinear with other variables in the dataset and sorted descending according to propensity. These will make model explainability harder and potentially give way to issues like overfitting. Depending on your end goal you might want to remove variables following the provided order.
         * [DUPLICATES - EXACT DUPLICATES] Found 3 instances with exact duplicate feature values.

从报告中可以得到多个不同优先级的警告⚠️,这些警告是以上每个模块中默认的评估结果。还可以通过参数输入得到更多的结果,DataQuality()的参数如下:

DataQuality(df: DataFrame,
            label: str = None,
            random_state: Optional[int] = None,
            entities: Optional[List[Union[str, List[str]]]] = None,
            is_close: bool = False,
            ed_extensions: Optional[list] = None,
            sample: Optional[DataFrame] = None,
            model: Callable = None,
            results_json_path: str = None,
            error_tol: int = 0,
            rel_error_tol: Optional[float] = None,
            minimum_coverage: Optional[float] = 0.75,
            sensitive_features: Optional[List[str]] = None,
            dtypes: Optional[dict] = None,
            corr_th: float = 0.8,
            vif_th: float = 5,
            p_th: float = 0.05,
            plot: bool = False,
            severity: str = 'ERROR')
"""
Args:
    df (DataFrame): reference DataFrame used to run the DataQuality analysis.
    label (str, optional): [MISSINGS, LABELLING, DRIFT ANALYSIS] target feature to be predicted.
                            If not specified, LABELLING is skipped.
    random_state (int, optional): Integer seed for random reproducibility. Default is None.
        Set to None for fully random behavior, no reproducibility.
    entities: [DUPLICATES] entities relevant for duplicate analysis.
    is_close: [DUPLICATES] Pass True to use numpy.isclose instead of pandas.equals in column comparison.
    ed_extensions: [ERRONEOUS DATA] A list of user provided erroneous data values to append to defaults.
    sample: [DRIFT ANALYSIS] data against which drift is tested.
    model: [DRIFT ANALYSIS] model wrapped by ModelWrapper used to test concept drift.
    results_json (str): [EXPECTATIONS] A path to the json output from a Great Expectations validation run.
    error_tol (int): [EXPECTATIONS] Defines how many failed expectations are tolerated.
    rel_error_tol (float): [EXPECTATIONS] Defines the maximum fraction of failed expectations, \
        overrides error_tol.
    minimum_coverage (float): [EXPECTATIONS] Minimum expected fraction of DataFrame columns covered by the \
        expectation suite.
    sensitive_features (List[str]): [BIAS & FAIRNESS] features deemed as sensitive attributes
    dtypes (Optional[dict]): Maps names of the columns of the dataframe to supported dtypes. Columns not \
        specified are automatically inferred.
    corr_th (float): [DATA RELATIONS] Absolute threshold for high correlation detection. Defaults to 0.8.
    vif_th (float): [DATA RELATIONS] Variance Inflation Factor threshold for numerical independence test, \
        typically 5-10 is recommended. Defaults to 5.
    p_th (float): [DATA RELATIONS] Fraction of the right tail of the chi squared CDF defining threshold for \
        categorical independence test. Defaults to 0.05.
    plot (bool): Pass True to produce all available graphical outputs, False to suppress all graphical output.
    severity (str): Sets the logger warning threshold.
        Valid levels are: [DEBUG, INFO, WARNING, ERROR, CRITICAL]
"""

默认情况下会进行Duplicates、Missing Values、Erroneous Data、Drift Analysis、Data Relations五项分析,如果参数label不为空则会进行Labelling分析,参数sensitive_features的list长度>0则会进行Bias & Fairness分析,参数results_json_path不为空则会进行Data Expectations分析。

这里,我们只能得到数据的每个优先级下的warning大概信息,想要获取详细信息还需进一步调用get_warnings()

dq.get_warnings(test='Duplicate Columns')
2、Duplicates

该模块功能主要判断三种重复:列重复、样本重复、根据某些特征groupby之后的样本重复。
列重复:判断dataframe中的特征列数据是否重复;如下col2和col3两列重复。

indexCol1Col2Col3
1133
2744
3388

样本重复:判断dataframe中的样本是否有重复的数据;如下index为1和2的两个样本重复

indexCol1Col2Col3
1123
2123
3388

根据某些特征groupby之后的样本重复:根据指定特征groupby,然后判断剩下特征的值是否重复;如下指定col1进行groupby,对比样本中的col2和col3是否相等,即col1=1中的index=1和2重复,而虽然index=4和5的col2、col3也相等,但是col1不在同一个group中

indexCol1Col2Col3
1123
2123
3158
4223
5323
6258
import pandas as pd
from ydata_quality.duplicates import DuplicateChecker
df = pd.read_csv('../datasets/transformed/guerry_histdata.csv')
dc = DuplicateChecker(df=df, entities=['Region', 'MainCity'])
results = dc.evaluate()
3、Missing Values

该模块功能主要判断特征缺失率是否大于阈值20%;计算缺失值特征的相关性,判断缺失值特征对模型预测的贡献度(模型训练的方法);

4、Labelling

该模块功能主要是对标签的分析,有标签的缺失情况;分布情况、异常标签的检测、多分类标签的ovr性能分析。

5、Erroneous Data

该模块功能主要是分析数据集中包含的error data,error data为预定义好的数据,默认有:“?”, “UNK”, “Unknown”, “N/A”, “NA”, “”, “(blank)”。也可以根据参数追加自定义的error data。

6、Drift Analysis

该模块功能主要分析data drift类型有:数据样本drift、标签drift、概念drift。

7、Data Expectations
8、Bias & Fairness

数据特征的偏见和公平性。通过训练模型预测敏感特征,性能越好,越敏感。

9、Data Relations

评估数据特征中的相关性。

总结

该库主要是利用统计学和机器学习的相关知识对数据进行几个方面的整体评估。涉及到很多数据上的处理,处理方法是基于pandas和sklearn。对于大数据集处理非常慢。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 使用sklearn处理wine和wine_quality数据集可以通过以下步骤实现: 1. 导入需要的库和数据集 ```python from sklearn.datasets import load_wine, load_wine_quality wine = load_wine() wine_quality = load_wine_quality() ``` 2. 查看数据集的基本信息 ```python print(wine.DESCR) # 查看wine数据集的描述信息 print(wine_quality.DESCR) # 查看wine_quality数据集的描述信息 print(wine.data.shape) # 查看wine数据集的数据维度 print(wine_quality.data.shape) # 查看wine_quality数据集的数据维度 ``` 3. 数据预处理 对于wine数据集,可以进行标准化处理: ```python from sklearn.preprocessing import StandardScaler scaler = StandardScaler() wine.data = scaler.fit_transform(wine.data) ``` 对于wine_quality数据集,可以进行数据分割: ```python from sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test = train_test_split(wine_quality.data, wine_quality.target, test_size=.2, random_state=42) ``` 4. 模型训练和评估 对于wine数据集,可以使用KMeans聚类算法进行训练和评估: ```python from sklearn.cluster import KMeans kmeans = KMeans(n_clusters=3, random_state=42) kmeans.fit(wine.data) print(kmeans.inertia_) # 查看聚类结果的误差平方和 ``` 对于wine_quality数据集,可以使用决策树进行训练和评估: ```python from sklearn.tree import DecisionTreeClassifier from sklearn.metrics import accuracy_score dtc = DecisionTreeClassifier(random_state=42) dtc.fit(X_train, y_train) y_pred = dtc.predict(X_test) print(accuracy_score(y_test, y_pred)) # 查看分类准确率 ``` 以上就是使用sklearn处理wine和wine_quality数据集的基本步骤。 ### 回答2: 使用sklearn处理wine和wine_quality数据集需要进行以下步骤: 1.导入数据集:可以使用sklearn中的datasets模块或pandas库中的read_csv()函数导入数据集。 2.数据预处理:可以对数据进行归一化、缺失值处理、异常值处理等操作。 3.数据划分:将数据集分成训练集和测试集,可以使用sklearn中的train_test_split()函数。 4.选择模型:根据数据集的特征和目标变量选择合适的模型。比如,可以使用线性回归模型、支持向量机模型、决策树模型等。 5.训练模型:将训练集输入模型,使用sklearn中的fit()函数来训练模型。 6.评估模型:使用测试集进行评估,可以通过计算预测值与真实值之间的误差、查准率、查全率、F1值等指标来评估模型的性能。 7.调参优化:可以通过调整模型中的超参数来优化模型性能。可以使用sklearn中的GridSearchCV()函数进行网格搜索,寻找最优参数。 例如,使用sklearn处理wine数据集的步骤如下: 1.导入数据集:从sklearn.datasets中导入wine数据集。 2.数据预处理:可以对数据进行归一化处理。 3.数据划分:将数据集分成训练集和测试集,可以使用train_test_split()函数。 4.选择模型:选择适合wine数据集的模型,如逻辑回归模型、支持向量机模型等。 5.训练模型:将训练集输入模型,使用fit()函数进行训练。 6.评估模型:使用测试集进行评估,可以通过计算预测值与真实值之间的误差、准确率、召回率、F1值等指标来评估模型的性能。 7.调整模型:通过调整模型中的超参数来优化模型性能。可以使用GridSearchCV()函数进行网格搜索,寻找最优参数。 综上所述,使用sklearn处理wine和wine_quality数据集需要进行数据预处理、数据划分、模型选择、训练模型、评估模型、调参优化等步骤。这些步骤可以帮助我们更好地掌握数据分析和机器学习的方法,并为实际问题提供更好的解决方案。 ### 回答3: 首先,我要介绍一下sklearn这个库。它是一个Python的机器学习库,提供了许多用于处理数据的工具和算法。同时,sklearn也支持一些常用的数据集,如wine和wine_quality。 wine数据集包含178个样本,每个样本有13个属性(如酒精和苹果酸含量等),分为三个类别(分别代表红酒,白酒和玫瑰酒)。 wine_quality数据集包含4898个样本,每个样本有12个属性(如挥发性酸含量和pH值等),分为11个类别(代表不同的质量等级)。这个数据集比wine数据集更大更复杂,是一个非常典型的分类问题。 在sklearn中,我们可以很方便地导入这两个数据集: ``` from sklearn.datasets import load_wine, load_wine_quality wine = load_wine() wine_quality = load_wine_quality() ``` 然后,我们可以使用sklearn中的一些工具和算法来分析这些数据。比如可以用k-means算法对wine数据集进行聚类,得出每个样本属于哪一个类别。代码如下: ``` from sklearn.cluster import KMeans kmeans = KMeans(n_clusters=3) kmeans.fit(wine.data) labels = kmeans.predict(wine.data) ``` 同样的,我们也可以使用决策树算法对wine_quality数据集进行分类。代码如下: ``` from sklearn.tree import DecisionTreeClassifier dtc = DecisionTreeClassifier() dtc.fit(wine_quality.data, wine_quality.target) predictions = dtc.predict(wine_quality.data) ``` 值得注意的是,这里选择的算法可能并不是最优的,需要根据具体的问题和数据来选择最适合的算法和工具。 在使用sklearn处理数据集时,还可以进行特征选择、数据预处理、模型评估等操作,这里就不一一介绍了。总之,sklearn是一个非常强大的库,可以帮助我们在机器学习领域取得更好的成果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值