Press "Enter" to skip to content

Pd.Get_Dummies的好坏与丑陋

这是给那些pd.get_dummies的忠实粉丝们

大家好 🤠

好的,我明白了。在Python中,将分类变量转换为虚拟变量数组最简单的方法之一就是使用Pandas的pd.get_dummies()。为什么要费时间从sklearn中导入OneHotEncoder,执行.fit_transform()等等等等呢?简直太繁琐了!

本文首先介绍一个简单的数据集,用于演示目的。该数据集包含一个测试集,其中包含在训练集中找不到的分类变量。然后,它将演示使用pd.get_dummies()可能会导致演示数据出现问题。最后,展示如何使用sklearn的OneHotEncoder避免这个问题。

图片来源:作者使用Canva中的文本转图片功能绘制的插图。提示:“三只穿着西部牛仔服装的熊猫。”

一个简单的演示数据集

这里有一个简单的数据集,包含一个名为OS的分类特征。OS列列出了计算机操作系统。我们将使用这个虚构的数据进行演示。在train_df中是虚构的演示训练数据。而在test_df中,我们有虚构的演示测试数据。

在我们虚构的演示案例中,测试集包含在训练集中不存在的分类值。这种不匹配将导致问题。

import pandas as pdtrain_df = pd.DataFrame({'OS': ['Windows', 'MacOS',                                 'Linux', 'Windows', 'MacOS']})test_df = pd.DataFrame({'OS': ['Windows', 'MacOS',                                'Android', 'Unix' 'iOS']})

在我们的训练数据中,我们有三个操作系统:Windows,MacOS和Linux。但在我们的测试数据中,我们还有额外的类别,包括Android,Unix和iOS。

train_df.get_dummies()上拟合的模型将无法与test_df.get_dummies()中的测试数据一起使用。结果不匹配。

图片来源:作者使用Canva创作的插图,使用Canva库中的图片素材。一个艺术用品模型。

pd.get_dummies的问题

在将pd.get_dummies()函数应用于我们的训练和测试数据集时,你将得到以下结果。

Leave a Reply

Your email address will not be published. Required fields are marked *