糖尿病康复,内容丰富有趣,生活中的好帮手!
糖尿病康复 > 特征编码2 - 无监督一维编码(序数编码 计数编码)及python示例

特征编码2 - 无监督一维编码(序数编码 计数编码)及python示例

时间:2021-01-19 15:50:34

相关推荐

特征编码2 - 无监督一维编码(序数编码 计数编码)及python示例

前情提要:特征编码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示例》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。