前情提要:特征编码1 - 特征编码概述与分类:/weixin_35757704/article/details/123050687
无监督的含义是:特征编码时根据自身数据的特点进行编码,而无需参考其他数据一维的含义是:编码时输入一维数据,输出一维数据
后续的python代码中,我们使用这个示例:
import numpy as npimport pandas as pdimport category_encoders as ce# 构造数据dataframe = pd.DataFrame(data=[np.random.random(size=100),np.random.random(size=100),np.random.random_integers(0, 5, 100),np.random.random_integers(0, 5, 100),np.random.random(size=100), ]).Tdataframe.columns = ['x1', 'x2', 'x3', 'y1', 'y2'] # 连续特征1, 连续特征2, 离散特征1, 离散y, 连续ytrain_df = dataframe.iloc[:70] # 训练用test_df = dataframe.iloc[70:] # 测试用
无监督输出1维
按照本身的数据来进行编码,并且输出的结果是1维数据
1. 序数编码 Ordinal Encoding/Label Encoder
把同一个离散值用同一个整数表示
from sklearn.preprocessing import LabelEncoderlabel_df = LabelEncoder().fit_transform(['a', 'b', 'a'])
结果:[0,1,0]
2. 计数编码 CountEncoder
计数,即直接统计这个标签对应的次数,将次数作为当前值对应的编码,类似于pandas.Dataframe.value_counts()
count_encoder = ce.CountEncoder(cols=['x3'])train_count_encoding = count_encoder.fit_transform(train_df)test_count_encoding = count_encoder.transform(test_df)
每个值的编码即为当前值出现的总次数
如果觉得《特征编码2 - 无监督一维编码(序数编码 计数编码)及python示例》对你有帮助,请点赞、收藏,并留下你的观点哦!