python中的pd.get_dummies和sklearn一个热编码器有什么区别?

时间:2019-03-11 10:24:57

标签: python pandas keras scikit-learn one-hot-encoding

pd.get_dummies和sklearn一个热编码器在python中有什么区别?据我所知,两者都可以完成相同的工作,谁能告诉我pd.get_dummies和sklearn一种热编码器的主要区别是什么,目前在这方面效率更高。

1 个答案:

答案 0 :(得分:2)

1。输出差异

pd.get_dummies生成Pandas DataFrame,而OneHotEncoder生成SciPy CSR矩阵。

示例-

s = pd.Series([1, 2, 3, 4, 5])
0    1
1    2
2    3
3    4
4    5
dtype: int64

type(pd.get_dummies(s))
pandas.core.frame.DataFrame

from sklearn.preprocessing import OneHotEncoder
enc = OneHotEncoder()
enc.fit_transform(s.values.reshape(-1, 1))#.toarray() # Can be converted to NumPy ndarray using .toarray
scipy.sparse.csr.csr_matrix

2。时间复杂度

pd.get_dummiesOneHotEncoder

Example -
s = pd.Series([1, 2, 3, 4, 5]*50000)
len(s)
250000

%timeit pd.get_dummies(s)
15.2 ms ± 227 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)

%timeit enc.fit_transform(s.values.reshape(-1, 1))
34.1 ms ± 5.26 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)

%timeit enc.fit_transform(s.values.reshape(-1, 1)).toarray() # more reusable
45.3 ms ± 5.63 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)

3。输入数据依赖性

如旧的post

中所述