Closed. This question needs details or clarity。它当前不接受答案。
想改善这个问题吗?添加详细信息,并通过editing this post阐明问题。
4年前关闭。
Improve this question
这四个功能似乎与我真的很相似。在某些情况下,其中一些可能会给出相同的结果,而有些则不会。任何帮助将不胜感激!
现在我知道了,并且我认为
如果我错了,请纠正我!谢谢! 将标签编码为分类变量: Pandas 将类别变量编码为虚拟/指示符(二进制)变量: Pandas
Pandas 和scikit-learn编码器之间的主要区别在于,已通过
将标签编码为分类变量
Pandas
将分类变量编码为虚拟/指标(二进制)变量
Pandas
我还根据此答案写了更详细的post。
想改善这个问题吗?添加详细信息,并通过editing this post阐明问题。
4年前关闭。
Improve this question
这四个功能似乎与我真的很相似。在某些情况下,其中一些可能会给出相同的结果,而有些则不会。任何帮助将不胜感激!
现在我知道了,并且我认为
factorize
和LabelEncoder
在内部是相同的,并且在结果方面没有太大的区别。我不确定它们是否会占用大量数据的相似时间。get_dummies
和OneHotEncoder
将产生相同的结果,但是OneHotEncoder
仅可处理数字,而get_dummies
将接受各种输入。 get_dummies
将为每个列输入自动生成新的列名,但是OneHotEncoder
不会(它将分配新的列名1,2,3 ....)。所以get_dummies
在所有方面都更好。如果我错了,请纠正我!谢谢!
最佳答案
这四种编码器可以分为两类:
factorize
和scikit-learn LabelEncoder
。结果将具有1维。 get_dummies
和scikit-learn OneHotEncoder
。结果将具有n个维,一个维是编码的分类变量的不同值。 Pandas 和scikit-learn编码器之间的主要区别在于,已通过
fit
和transform
方法将scikit-learn编码器用于 scikit-learn管道。将标签编码为分类变量
Pandas
factorize
和scikit-learn LabelEncoder
属于第一类。它们可用于创建分类变量,例如将字符转换为数字。from sklearn import preprocessing
# Test data
df = DataFrame(['A', 'B', 'B', 'C'], columns=['Col'])
df['Fact'] = pd.factorize(df['Col'])[0]
le = preprocessing.LabelEncoder()
df['Lab'] = le.fit_transform(df['Col'])
print(df)
# Col Fact Lab
# 0 A 0 0
# 1 B 1 1
# 2 B 1 1
# 3 C 2 2
将分类变量编码为虚拟/指标(二进制)变量
Pandas
get_dummies
和scikit-learn OneHotEncoder
属于第二类。它们可用于创建二进制变量。 OneHotEncoder
仅可与分类整数一起使用,而get_dummies
可与其他类型的变量一起使用。df = DataFrame(['A', 'B', 'B', 'C'], columns=['Col'])
df = pd.get_dummies(df)
print(df)
# Col_A Col_B Col_C
# 0 1.0 0.0 0.0
# 1 0.0 1.0 0.0
# 2 0.0 1.0 0.0
# 3 0.0 0.0 1.0
from sklearn.preprocessing import OneHotEncoder, LabelEncoder
df = DataFrame(['A', 'B', 'B', 'C'], columns=['Col'])
# We need to transform first character into integer in order to use the OneHotEncoder
le = preprocessing.LabelEncoder()
df['Col'] = le.fit_transform(df['Col'])
enc = OneHotEncoder()
df = DataFrame(enc.fit_transform(df).toarray())
print(df)
# 0 1 2
# 0 1.0 0.0 0.0
# 1 0.0 1.0 0.0
# 2 0.0 1.0 0.0
# 3 0.0 0.0 1.0
我还根据此答案写了更详细的post。
关于python - 想知道pd.factorize,pd.get_dummies,sklearn.preprocessing.LableEncoder和OneHotEncoder之间的区别。,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40336502/
10-13 03:53