首页 理论教育 解决属性冗余的问题

解决属性冗余的问题

时间:2023-06-27 理论教育 版权反馈
【摘要】:冗余问题是数据集成中经常发生的另一个问题。此外,同一属性多次出现,或者同一属性命名的不一致也会导致集成后的数据集出现数据冗余问题。例3_8使用Kaggle房价数据集来展示如何使用相关系数等进行删除冗余与相关分析。图3-3Kaggle房价数据集的相关性分析由图3-3可知,利用相关分析可以发现一些数据冗余情况。找出10种与SalePrice最相关的属性后,由于其对标签影响最大,可以删去一些冗余值。

解决属性冗余的问题

冗余问题是数据集成中经常发生的另一个问题。若一个属性可以从其他属性中推演出来,那这个属性就是冗余属性。例如,一个顾客数据表中的平均月收入属性就是冗余属性,显然它可以根据月收入属性计算出来。此外,同一属性多次出现,或者同一属性命名的不一致也会导致集成后的数据集出现数据冗余问题。有些冗余可以被相关分析检测到。通过计算属性A、B的相关系数(皮尔逊积矩系数)来判断是否冗余;对于离散数据,可通过卡方检验来判断两个属性A和B之间的相关联系。如果一个属性能由另一个或另一组属性“导出”,则此属性可能是冗余的。一般来说,通过删除冗余特征或聚类消除多余数据。

例3_8使用Kaggle房价数据集来展示如何使用相关系数等进行删除冗余与相关分析。首先导入要用到的包和数据集,Kaggle主要包括train.csv训练集和test.csv测试集,训练集和测试集都是DataFrame数据结构。DataFrame引入了schema元信息,即数据结构的描述信息,在网络传输时,可对数据内容本身序列化。从Kaggle上获取数据后,对每个样本的特征属性和标签(房屋价格)进行相关分析与处理(包括取出异常值、冗余数据、填充缺省值、特征转换、数据转化等)。

例3_8_Redundancy and Correlation analysis.py

获取数据并查看运行后的部分结果如下,可以看到训练集的shape是(1460,81)表示共有1 460个样本,每个样本有81个属性,测试集的shape是(1459,80)表示共有1 459个测试样本,每个测试样本有1 459个属性。训练集中的每个样本有81个属性,但第一个Id属性没有意义,可以考虑删去。最后一个属性SalePrice是该样本数据的标签。此外,这些属性值中有些属性是字符型,有些是数据型。

(www.xing528.com)

图3-3 Kaggle房价数据集的相关性分析

由图3-3可知,利用相关分析可以发现一些数据冗余情况。利用DataFrame数据类型的函数corr(),并将与SalePrice属性相关度大于0.5的所有属性取出来。从结果看出,除了SalePrice自身外,还有9个属性与SalePrice相关程度较高,依次是'OverallQual'、'GrLivArea'、'GarageCars'、'GarageArea'、'TotalBsmtSF'、'1stFlrSF'、'FullBath'、'TotRmsAbvGrd'、'YearBuilt'。找出10种与SalePrice最相关的属性后,由于其对标签影响最大,可以删去一些冗余值。具体的冗余去除操作代码如下:

执行结果如下:

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈