如何在标签编码后提取特征以进行对象到数字的转换

Posted

技术标签:

【中文标题】如何在标签编码后提取特征以进行对象到数字的转换【英文标题】:How to extract feature after Label Encoding for object to numeric conversion 【发布时间】:2021-11-28 20:59:21 【问题描述】:
%matplotlib inline
import matplotlib.pyplot as plt
import pandas as pd
bank=pd.read_csv('train_bank.csv')
df=pd.DataFrame(bank)
df.head()

    ID          Gen     Mar Dep Edu         Sel Income
0   LP001002    Male    No  0   Graduate    No  5849
1   LP001003    Male    Yes 1   Graduate    No  4583
2   LP001005    Male    Yes 0   Graduate    Yes 3000
3   LP001006    Male    Yes 0   Not Grad    No  2583
4   LP001008    Male    No  0   Graduate    No  6000



#Label Encoding for object to numeric conversion
from sklearn.preprocessing import LabelEncoder
le = LabelEncoder()

for feat in objList:
    df[feat] = le.fit_transform(df[feat].astype(str))

df.head()

    ID  Gen Mar Dep Edu Sel Income
0   0   1   0   0   0   0   5849
1   1   1   1   1   0   0   4583
2   2   1   1   0   0   1   3000
3   3   1   1   0   1   0   2583
4   4   1   0   0   0   0   6000

但我想要像“Edu”这样的功能名称,它的毕业生 = 0 而不是毕业生 = 1。虽然我认为这应该是“Edu”变量的另一种方式。但是如何知道哪个代码是哪个功能。并且要像 iris 数据(下)一样,我们需要 feature_names 以及如何做到这一点。我是 Python 的新手,正在尝试做自己的项目:

fn=iris.feature_names
cn=iris.target_names
fig, axes = plt.subplots(nrows = 1,ncols = 1,figsize = (4,4), dpi=500)
tree.plot_tree(classifier.estimators_[0],
               feature_names = fn, 
               class_names=cn,
               filled = True);
fig.savefig('rf_individualtree.png')

我可以从数据中拆分目标和特征变量,但名称我不知道。

【问题讨论】:

【参考方案1】:

通常类别的顺序是按字母顺序定义的,例如在您的Edu 列中,Grad 为 0,Not Grad 为 1。

您可以在遍历列时存储您的类,例如:

from sklearn.preprocessing import LabelEncoder
import pandas as pd

le = LabelEncoder()

df = pd.DataFrame('Gen':['Male','Female','Male'],
'Edu':['Graduate','Not Grad','Graduate'])

categories = 

for feat in ['Gen','Edu']:
    df[feat] = le.fit_transform(df[feat])
    categories[feat] = le.classes_

数据框如下所示:

df

   Gen  Edu
0    1    0
1    0    1
2    1    0

班级订单:

categories
 
'Gen': array(['Female', 'Male'], dtype=object),
 'Edu': array(['Graduate', 'Not Grad'], dtype=object)

【讨论】:

以上是关于如何在标签编码后提取特征以进行对象到数字的转换的主要内容,如果未能解决你的问题,请参考以下文章

如何在使用 sklearn 进行一次热编码后给出列名?

机器学习:如何在具有分类和数字特征的 pandas 数据帧上应用一种热编码?

如何使用Opencv对图像进行颜色特征提取

使用 MFCC 进行特征提取

以数字方式编码 Dataframe 特征

用于决策树的 one-hot 编码后如何解释特征重要性