当前位置: 首页 > 面试题库 >

get_dummies(Pandas)和OneHotEncoder(Scikit-learn)之间的优缺点是什么?

苏墨竹
2023-03-14
问题内容

我正在学习将机器学习分类器将分类变量转换为数字的不同方法。我遇到了这种pd.get_dummies方法,sklearn.preprocessing.OneHotEncoder()我想看看它们在性能和用法上有何不同。

我发现关于如何使用教程OneHotEncoder()上https://xgdgsc.wordpress.com/2015/03/20/note-on-
using-onehotencoder-in-scikit-learn-to-work-on-categorical-
features/

自该sklearn文档对该功能的帮助不是很大。我有一种感觉,我做得不正确…但是

有人能解释一下使用pd.dummiesover的利弊sklearn.preprocessing.OneHotEncoder()吗?我知道这OneHotEncoder()为您提供了一个稀疏矩阵,但除此之外,我不确定该如何使用以及该pandas方法有什么好处。我使用效率低下吗?

import pandas as pd
import numpy as np
from sklearn.datasets import load_iris
sns.set()

%matplotlib inline

#Iris Plot
iris = load_iris()
n_samples, m_features = iris.data.shape

#Load Data
X, y = iris.data, iris.target
D_target_dummy = dict(zip(np.arange(iris.target_names.shape[0]), iris.target_names))

DF_data = pd.DataFrame(X,columns=iris.feature_names)
DF_data["target"] = pd.Series(y).map(D_target_dummy)
#sepal length (cm)  sepal width (cm)  petal length (cm)  petal width (cm)  \
#0                  5.1               3.5                1.4               0.2   
#1                  4.9               3.0                1.4               0.2   
#2                  4.7               3.2                1.3               0.2   
#3                  4.6               3.1                1.5               0.2   
#4                  5.0               3.6                1.4               0.2   
#5                  5.4               3.9                1.7               0.4

DF_dummies = pd.get_dummies(DF_data["target"])
#setosa  versicolor  virginica
#0         1           0          0
#1         1           0          0
#2         1           0          0
#3         1           0          0
#4         1           0          0
#5         1           0          0

from sklearn.preprocessing import OneHotEncoder, LabelEncoder
def f1(DF_data):
    Enc_ohe, Enc_label = OneHotEncoder(), LabelEncoder()
    DF_data["Dummies"] = Enc_label.fit_transform(DF_data["target"])
    DF_dummies2 = pd.DataFrame(Enc_ohe.fit_transform(DF_data[["Dummies"]]).todense(), columns = Enc_label.classes_)
    return(DF_dummies2)

%timeit pd.get_dummies(DF_data["target"])
#1000 loops, best of 3: 777 µs per loop

%timeit f1(DF_data)
#100 loops, best of 3: 2.91 ms per loop

问题答案:

OneHotEncoder无法直接处理字符串值。如果名义特征是字符串,则需要首先将它们映射为整数。

pandas.get_dummies相反。默认情况下,除非指定了列,否则它仅将字符串列转换为一键表示。



 类似资料:
  • 问题内容: 只是想知道TreeSet的优缺点是什么,是否有人可以告诉我?谢谢! 问题答案: 收藏类之一。它使您可以按键或按键顺序访问集合中的元素。它比ArrayList或HashMap具有更多的开销。当您不需要顺序访问时,只需按键查找即可使用HashSet。使用ArrayList并使用Arrays。如果只想按顺序排列元素,则排序。TreeSet始终保持元素顺序。使用ArrayList,您可以在需要

  • 有人能解释一下(也许用例子)scikit learn中OneVsRestClassifier和MultiOutputClassifier的区别吗? 我已经阅读了文档,并了解我们使用: OneVsRestClassifier——当我们想要进行多类或多标签分类时,它的策略包括为每个类安装一个分类器。对于每个分类器,该类与所有其他类相匹配。(这非常清楚,这意味着多类/多标签分类问题被分解为多个二进制分类

  • 问题内容: 我正在检查是否存在目录,但是我注意到我正在使用而不是。两者都很好,但是我很好奇使用代替的优势。 问题答案: 如果存在具有该名称的常规文件,也将返回。 仅当该路径存在且为目录或指向目录的符号链接时才返回。

  • 本文向大家介绍什么是ajax和json,它们的优缺点相关面试题,主要包含被问及什么是ajax和json,它们的优缺点时的应答技巧和注意事项,需要的朋友参考一下 ajax的全称:Asynchronous Javascript And XML。 异步传输+js+xml。实现无刷新状态更新页面和异步提交 所谓异步,在这里简单地解释就是:向服务器发送请求的时候,我们不必等待结果,而是可以同时做其他的事情,

  • 本文向大家介绍微服务架构的优点和缺点是什么?相关面试题,主要包含被问及微服务架构的优点和缺点是什么?时的应答技巧和注意事项,需要的朋友参考一下 微服务架构的优点 微服务架构的缺点 可以自由使用不同的技术 增加故障排除的难度 每个微服务都专注于单一功能 由于远程调用而导致延迟增加 支持单个可部署单元 增加配置和其他操作的工作量 允许软件的持续发布 难以维持处理的安全性 可确保每项服务的安全性 很难跟

  • 问题内容: 我正在寻找提高某些SQL性能的方法,当前CTE正在脚本中多次使用和引用。我会使用表变量来获得改进吗?(因为代码在函数内,所以不能使用临时表)。 问题答案: 您实际上必须进行性能测试-没有“是/否”答案。根据安迪·利文(Andy Living)上面链接到的文章,CTE只是查询或子查询的简写。 如果您在同一函数中两次或多次调用它,则填充表变量然后加入该表变量或从中选择表变量可能会获得更好的