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/
转载文章受原作者版权保护。转载请注明原作者出处!