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个维,一个维是编码的分类变量的不同值。 熊猫和scikit-learn编码器之间的主要区别在于,已通过fit
和transform
方法将scikit-learn编码器用于 scikit-learn管道。
将标签编码为分类变量
熊猫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
将分类变量编码为虚拟/指标(二进制)变量
熊猫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。
.get()之后,多处理陷入困境 - python我试图了解multiprocessing如何在python中工作并遇到一些问题。这是示例:import multiprocessing def func(): return 1 p = multiprocessing.Pool() result = p.apply_async(func).get() 调用.get()函数时,代码只是卡住了。我究竟做错了什么?…
通过参数传递异步循环或使用默认异步循环 - python我在我的应用程序中使用asyncio,我有点困惑将事件循环作为参数传递。使用事件循环编写函数/方法时,有三种可能性:将异步事件循环作为参数传递不要在事件循环中使用参数,而应使用asyncio.get_event_loop() 使其可选,以将事件循环作为参数传递。如果未通过,请使用asyncio.get_event_loop() 似乎大多数情况下都使用最后一种…
Flask-从request.get_json()获取键值 - python我试图从ajax POST请求json数据后获取键值。我成功检索了数据,但是出现错误:“ AttributeError:'unicode'对象没有属性'keys'”。我曾尝试使用json.load(data),但这也没有成功。@app.route('/sendstats', methods=['GET', '…
在Ubuntu上安装psycopg2 - python我正在尝试在Ubuntu 12.04上安装python postgres客户端模块。该指南将执行以下操作:apt-get install python-psycopg2 但是,apt表示无法找到该软件包。我渴望通过apt安装它。这是我可以安装的另一个软件包的一部分吗? 参考方案 使用Ubuntu 12.04似乎对我来说很好:jon@minerva:~$ su…
Django隐藏重定向 - python我想为应用内重定向创建一种机制,该机制不会完全重定向,而只是加载另一个视图函数。假设我要进行localhost:8000/a,django渲染视图,视图的最后一行说return HttpResponseRedirect('/b') 因此,现在我的浏览器将转到localhost:8000/b,django将呈现视图并将其返回给我。现在,我只…