如何在标签编码后提取特征以进行对象到数字的转换
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)
【讨论】:
以上是关于如何在标签编码后提取特征以进行对象到数字的转换的主要内容,如果未能解决你的问题,请参考以下文章