0
点赞
收藏
分享

微信扫一扫

FE01_OneHot-Python应用


Intro

  onehot的操作,解决两个问题:

  • 可以把列名关联上去
  • 可以处理之前的value

数据构造

import pandas as

df=pd.DataFrame({"id":[1,2,3,4],"grade":["A","B","A","C"],"class":[ "1班","2班","3班","1班"]})

pd.get_dummies

category_feature=["grade","class"]
pd.concat([df,pd.get_dummies(df[category_feature])],axis=1)



id

grade

class

grade_A

grade_B

grade_C

class_1班

class_2班

class_3班

0

1

A

1班

1

0

0

1

0

0

1

2

B

2班

0

1

0

0

1

0

2

3

A

3班

1

0

0

0

0

1

3

4

C

1班

0

0

1

1

0

0

pandas这个功能数据处理时方便,但是有个小问题,训练集和测试集是分开处理的,对测试集onehot时,列的顺序、是否出现训练集中没有的值,都是难以解决的问题。

OneHotEncoder

from sklearn.preprocessing import

df_new = df.query("id!=4")
enc = OneHotEncoder(handle_unknown='ignore',sparse=False)
enc.fit(df_new[category_feature])
pd.DataFrame(enc.transform(df[category_feature]),columns=enc.get_feature_names_out())



grade_A

grade_B

class_1班

class_2班

class_3班

0

1.0

0.0

1.0

0.0

0.0

1

0.0

1.0

0.0

1.0

0.0

2

1.0

0.0

0.0

0.0

1.0

3

0.0

0.0

1.0

0.0

0.0

id=4这条数据,grade=C,不属于A也不属于B则都是0,此时满足需求

                                2022-01-12 于南京市江宁区九龙湖


举报

相关推荐

0 条评论