python - sklearn LabelEncoder 和 pd.get_dummies 有什么区别?

标签 python pandas scikit-learn

我想知道 sklearn LabelEncoder 与 pandas get_dummies 之间的区别。为什么会选择 LabelEncoder 而不是 get_dummies。使用一个比另一个有什么优势?缺点?

据我所知,如果我有A级

ClassA = ["Apple", "Ball", "Cat"]
encoder = [1, 2, 3]

dummy = [001, 010, 100]

我是不是理解错了?

最佳答案

这些只是方便的功能,自然地属于这两个库分别倾向于做事的方式。第一个通过将事物更改为整数来“压缩”信息,第二个“扩展”允许(可能)更方便访问的维度。


sklearn.preprocessing.LabelEncoder简单地转换来自任何域的数据,使其域为 0, ..., k - 1,其中 k 是类的数量。

所以,例如

["paris", "paris", "tokyo", "amsterdam"]

可以变成

[0, 0, 1, 2]

pandas.get_dummies也接受一个包含来自某个域的元素的系列,但将其扩展为一个 DataFrame,其列对应于系列中的条目,并且值是 0 或 1,具体取决于它们最初是什么。所以,例如,相同的

["paris", "paris", "tokyo", "amsterdam"]

将成为带有标签的 DataFrame

["paris", "tokyo", "amsterdam"]

并且他的 "paris" 条目将是系列

[1, 1, 0, 0]

第一种方法的主要优点是节省空间。相反,将事物编码为整数可能会给人留下这样的印象(给您或某些机器学习算法),即顺序是有意义的。仅仅是因为整数编码,“amsterdam”更接近“tokyo”而不是“paris”吗?可能不是。第二种表示在这方面更清楚一些。

关于python - sklearn LabelEncoder 和 pd.get_dummies 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38413579/

相关文章:

Python dataframe 将日期时间列转换为秒

python - t-SNE 在不同的机器上产生不同的结果

使用 map 从类方法调用 NumPy 时出现 Python 错误

python - 如何从数据集中删除无用元素

python - 如何在 cython 中访问枚举?

machine-learning - 如何计算伯努利朴素贝叶斯的联合对数似然

python - 用户警告 : Label not :NUMBER: is present in all training examples

Python在3D散点图中用线连接相邻点

python - reshape 非常大的数据框

python - 通过许多子图改善子图大小/间距