本文主要是介绍python sklearn labelencoder、OneHotEncoder和get_dummies的区别,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文章目录
- labelencoder
- OneHotEncoder
- get_dummies
- LabelBinarizer
labelencoder
LabelEncoder
将不连续的数字or文本进行编号
import numpy as np
import pandas as pd
data = pd.DataFrame({"学号":[1001,1002,1003,1004],"性别":["男","女","女","男"],"学历":["本科","硕士","专科","本科"]})
data
学号 性别 学历
0 1001 男 本科
1 1002 女 硕士
2 1003 女 专科
3 1004 男 本科
## 选择object类型的变量
lis = list(data.select_dtypes(include='object').columns)
lis['性别', '学历']
- 使用
LabelEncoder
进行编码,每个变量单独进行多变量的编码
from sklearn.preprocessing import LabelEncoder
le = LabelEncoder()for m in lis:data[m] = le.fit_transform(data[m])data
学号 性别 学历
0 1001 1 1
1 1002 0 2
2 1003 0 0
3 1004 1 1
OneHotEncoder
OneHotEncoder
对表示分类的数字进行编码
输入的应该是表示类别的数字,如果输入文本,会报错的。
from sklearn.preprocessing import OneHotEncoder
OHE = OneHotEncoder()
OHE.fit(data)
data3 = le.fit_transform(data["性别"])
OHE.fit(data3.reshape(-1,1))
OHE.transform(data3.reshape(-1,1)).toarray()
array([[0., 1.],[1., 0.],[1., 0.],[0., 1.]])
get_dummies
get_dummies
的效果和LabelEncoder
一致
pd.get_dummies(data)学号 性别 学历
0 1001 1 1
1 1002 0 2
2 1003 0 0
3 1004 1 1
LabelBinarizer
对因变量y不能用OneHotEncoder
,要用LabelBinarizer
。
from sklearn.preprocessing import LabelBinarizerlab = LabelEncoder()lab.fit_transform(data['学历'])
array([1, 2, 0, 1], dtype=int64)
这篇关于python sklearn labelencoder、OneHotEncoder和get_dummies的区别的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!