python 数据处理中的 LabelEncoder ,OrdinalEncoder 和 OneHotEncoder

LabelEncoder 是对不连续的数字或者文本进行编号,处理标签专用。处理多维数组用OrdinalEncoder

from sklearn.preprocessing import LabelEncoder

le = LabelEncoder()

le.fit([1,5,67,100])

le.transform([1,1,100,67,5])

输出: array([0,0,3,2,1])
————————————————
版权声明:本文为CSDN博主「hiptonese」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u01256

#将所有的分类型变量编码为数字,一个类别是一个数字

(LabelEncoder 是对不连续的数字或者文本进行编号单维,针对标签,特征多维用OrdinalEncoder) 二维以上

from sklearn.preprocessing import OrdinalEncoder #只允许二维以上的数据进行输入
oe = OrdinalEncoder()

#利用训练集进行fit
oe = oe.fit(Xtrain.loc[:,cate])

OneHotEncoder

(我们刚才已经用OrdinalEncoder把分类变量Sex和Embarked都转换成数字对应的类别了。在舱门Embarked这一
列中,我们使用[0,1,2]代表了三个不同的舱门,然而这种转换是正确的吗?)

data1.head()
##  独热编码,创建哑变量
##
from sklearn.preprocessing import OneHotEncoder
X = data.iloc[:,1:-1]
X.head()

SexEmbarked0maleS1femaleC2femaleS3femaleS4maleS

enc = OneHotEncoder(categories='auto').fit(X) #实例化
result = enc.transform(X).toarray() #把结果转化成一个数组
enc.transform(X).toarray()   #将女性和男性分成数组,,,前两位,舱门分为为数组后三位::稀疏矩阵

依然可以直接一步到位,但为了给大家展示模型属性,所以还是写成了三步

OneHotEncoder(categories=’auto’).fit_transform(X).toarray()

依然可以还原

pd.DataFrame(enc.inverse_transform(result))

enc.get_feature_names()#返回每一个经过哑变量后生成稀疏矩阵列的名字
array(['x0_female', 'x0_male', 'x1_C', 'x1_Q', 'x1_S'], dtype=object)
#axis=1,表示跨行进行合并,也就是将两表左右相连,如果是axis=0,就是将量表上下相连
newdata = pd.concat([data,pd.DataFrame(result)],axis=1)
newdata.head()

有的图表特征后移了,注意一下,不是错误,是复制过来显示错误。

AgeSexEmbarkedSurvived01234022.0maleSNo0.01.00.00.01.0138.0femaleCYes1.00.01.00.00.0226.0femaleSYes1.00.00.00.01.0335.0femaleSYes1.00.00.00.01.0435.0maleSNo0.01.00.00.01.0

删掉两列,inplace=True 并覆盖原数据
newdata.drop(["Sex","Embarked"],axis=1,inplace=True)
newdata.head()

AgeSurvived01234022.0No0.01.00.00.01.0138.0Yes1.00.01.00.00.0226.0Yes1.00.00.00.01.0335.0Yes1.00.00.00.01.0435.0No0.01.00.00.01.0

newdata.columns = ["Age","Survived","Female","Male","Embarked_C","Embarked_Q","Embarked_S"]
newdata.head()

独热编码后的特征无需无量纲化处理,

AgeSurvivedFemaleMaleEmbarked_CEmbarked_QEmbarked_S022.0No0.01.00.00.01.0138.0Yes1.00.01.00.00.0226.0Yes1.00.00.00.01.0335.0Yes1.00.00.00.01.0435.0No0.01.00.00.01.0

Original: https://blog.csdn.net/weixin_40245496/article/details/117366220
Author: weixin_40245496
Title: python 数据处理中的 LabelEncoder ,OrdinalEncoder 和 OneHotEncoder

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/699546/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球