- 54
- 0
用上面四种方法都能实现编码,他们的区别在哪里呢?当然脚本长度不同我已经看出来了。
get_dummies方法
df7 = DataFrame({'key':list('bbacab'),
'data1':range(6)})
dummies = pd.get_dummies(df7.key,prefix = 'key')
dummies
dummies
0 0 1 0
1 0 1 0
2 1 0 0
3 0 0 1
4 1 0 0
5 0 1 0
LabelEncoder加get_dummies方法
这个方法主要还是用的get_dummies
le = LabelEncoder()
# le.fit(df7['key'])
df7['key2'] = le.fit_transform(df7['key'])
pd.get_dummies(df7.key2)
0 0 1 0
1 0 1 0
2 1 0 0
3 0 0 1
4 1 0 0
5 0 1 0
label_binarize方法
lab = label_binarize(df7['key'],classes = ['a','b','c'])
lab
array([[0, 1, 0],
[0, 1, 0],
[1, 0, 0],
[0, 0, 1],
[1, 0, 0],
[0, 1, 0]])
columns =
df7.join(pd.DataFrame(lab)).rename(columns = {0:'key_a',1:'key_b',2:'key_c'})
0 0 b 1 0 1 0
1 1 b 1 0 1 0
2 2 a 0 1 0 0
3 3 c 2 0 0 1
4 4 a 0 1 0 0
5 5 b 1 0 1 0
OneHotEncoder
onehot_encoder = OneHotEncoder(sparse=False)
integer_encoded = df7['key2'].values.reshape(len(df7['key2']), 1)
onehot_encoded = onehot_encoder.fit_transform(integer_encoded)
onehot_encoded
# 这里生成的arry数组和label_binarize生成的一样,所以他们的区别在哪里呢?当然整数和小数的区别不算。
array([[ 0., 1., 0.],
[ 0., 1., 0.],
[ 1., 0., 0.],
[ 0., 0., 1.],
[ 1., 0., 0.],
[ 0., 1., 0.]])
pd.DataFrame(onehot_encoded)
# 然后再用join方法即可
0 0.0 1.0 0.0
1 0.0 1.0 0.0
2 1.0 0.0 0.0
3 0.0 0.0 1.0
4 1.0 0.0 0.0
5 0.0 1.0 0.0 0
打赏
收藏
点击回答
- 共 0 条
- 全部回答
-
森眸暖光 普通会员 1楼
get_dummies,LabelEncoder,OneHotEncoder,label_binarize都是Python中处理数据集时常用的函数,它们在编码数据时有以下区别:-
get_dummies: 它用于将分类数据集中的类别(如'Yes', 'No', 'Other'等)转换为数值型变量。对于数值型变量,get_dummies会将其映射为二进制码(0或1),并保留原始类别名。例如,对于LabelEncoder中的类别,get_dummies会将其转换为0和1的二进制码。这种方法的优点是可以避免在编码时丢失原始类别的信息,但缺点是会增加数据的维度。 -
LabelEncoder: 它用于将分类数据集中的标签(如'Yes', 'No', 'Other'等)转换为数值型变量。例如,LabelEncoder会将其转换为0和1的二进制码,但保留原始类别名。这种方法的优点是可以准确地表示类别,但缺点是会增加数据的维度。 -
OneHotEncoder: 它用于将分类数据集中的数值型变量转换为一维码。例如,OneHotEncoder会将每个数值变量转换为一个离散的向量,每个向量表示一个类别。这种方法的优点是可以有效地表示类别,但缺点是会增加数据的维度。 -
label_binarize: 它用于将分类数据集中的数值型变量转换为二进制码。例如,label_binarize会将每个数值变量转换为0和1的二进制码。这种方法的优点是可以准确地表示类别,但缺点是会增加数据的维度。
-
更多回答
网站公告
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部

