引导序数编码技术


在数据科学领域进行建模之前,数据准备是必要的步骤。在数据准备过程中,我们必须执行许多活动。其中一项重要的任务是对分类数据进行编码。众所周知,现实世界中的大多数数据都具有分类字符串值,而大多数机器学习模型仅使用整数值进行操作。但是,某些模型可以使用其他更复杂但仍然可以被模型理解的值。从本质上讲,所有模型都执行可以使用各种工具和方法完成的数学运算。但可怕的事实是,数学完全依赖于数字。总之,大多数模型需要数字而不是单词或其他类型的输入,这些数字可能是浮点数或整数。在本文中,我们将讨论编码和序数编码方法。

什么是编码?

编码是将分类数据转换为整数格式的过程,以便模型可以使用转换后的分类值来生成和改进预测。

实现序数编码

当数据中的变量为序数时,使用序数编码,它将每个标签转换为一个整数值,并在编码数据中描绘标签的顺序。

示例

以下是如何在 Python 中执行此操作的示例。

#Installation !pip install sklearn import pandas as pd import sklearn !pip install category_encoders import category_encoders as ce df=pd.DataFrame({'height':['tall','medium','short','tall','medium',' short','tall','medium','short',]}) # create object of Ordinalencoding encoder= ce.OrdinalEncoder(cols=['height'],return_df=True, mapping=[{'col':'height', 'mapping':{'None':0,'tall':1,'medium':2,'short':3}}]) #Original data print(df) df['transformed'] = encoder.fit_transform(df) print(df)

输出

height
0    tall
1  medium
2   short
3    tall
4  medium
5   short
6    tall
7  medium
8   short
  height  transformed
0    tall            1
1  medium            2
2   short            3
3    tall            1
4  medium            2
5   short            3
6    tall            1
7  medium            2
8   short            3

独热编码

在独热编码中,每个分类变量的每个类别都会收到一个新的变量。每个类别都使用二进制整数(0 或 1)进行映射。当数据为名义数据时,使用这种类型的编码。虚拟变量可以被认为是新生成的二进制特征。热编码后使用的虚拟变量的数量取决于数据中包含多少个类别。以下是如何在 Python 中执行此操作的示例。

示例

!pip install sklearn import pandas as pd import sklearn !pip install category_encoders import category_encoders as ce df=pd.DataFrame({'name':[ 'rahul','jay','aman','devesh','ashok','shubham','amit' ]}) encoder=ce.OneHotEncoder(cols='name',handle_unknown='return_nan',ret urn_df=True,use_cat_names=True) #Original Data print(df) #Fit and transform Data df_encoded = encoder.fit_transform(df) print(df_encoded)

输出

     name
0    rahul
1      jay
2     aman
3   devesh
4    ashok
5  shubham
6     amit
name_rahul  name_jay  name_aman  name_devesh  name_ashok  name_shubham  \
0         1.0       0.0        0.0          0.0         0.0           0.0   
1         0.0       1.0        0.0          0.0         0.0           0.0   
2         0.0       0.0        1.0          0.0         0.0           0.0   
3         0.0       0.0        0.0          1.0         0.0           0.0   
4         0.0       0.0        0.0          0.0         1.0           0.0   
5         0.0       0.0        0.0          0.0         0.0           1.0   
6         0.0       0.0        0.0          0.0         0.0           0.0   

   name_amit  
0        0.0  
1        0.0  
2        0.0  
3        0.0  
4        0.0  
5        0.0  
6        1.0  

结论

总之,我们可以说编码在机器学习中起着重要作用。大多数情况下,现实世界的挑战要求我们仅选择一种编码技术,以便模型能够正常工作。使用各种编码器可以改变模型的输出。在这篇文章中,我们已经看到了各种编码技术以及如何使用 category encoders 包和 Python 来应用它们。

更新于:2022年12月1日

2K+ 浏览量

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告