如何对连续型数据进行离散化处理,并进行OneHot编码?
如何对连续型数据进行离散化处理,并进行OneHot编码,最终将OneHot编码作为特征因子输入模型?
什么是OneHot编码
One-Hot编码是分类变量作为二进制向量的表示。这首先要求将分类值映射到整数值。然后,每个整数值被表示为二进制向量,除了整数的索引之外,它都是零值,它被标记为1。
通过这个简单的例子,比如这个特征是指的学生的一个性别,那么这个性别只有男女两类?那么我们通过这个 one hold 编码出来,就是男用 1,0 表示,女用 0,1 表示。年纪按照小学、初中、高中来进行一个编码,那么小学就可以用100,那么初中用 010 ,高中用 001 。如果说这个特征,它有几类的话,那么得有几列数字,然后其中每一列如果那个值为 1 的话,就表示其中的一个分类。那么从这种分类的就是类别型的一个特征。没有用 one hode 之前就是那种简单的一个分类,比如12345 这种就直接拿去训练了。
代码示例
df = m11.data.read()
#分箱
col_name = 'pe_ttm_bins'
def cal_bins(df):
bins=5
df[col_name] = np.array(pd.qcut(df.pe_ttm_0, bins, labels=range(0, bins)))
return df
df = df.groupby('date').apply(cal_bins)
display("分箱结果:",df[['date','instrument','pe_ttm_0','pe_ttm_bins']])
#换成one-hot编码
df = pd.get_dummies(df,columns=[col_name])
display("one-hot编码结果:",df[['date','instrument','pe_ttm_0','pe_ttm_bins_0','pe_ttm_bins_1','pe_ttm_bins_2','pe_ttm_bins_3']])
输出结果
源码克隆
讲解视频
可以详细看工程师的视频讲解:
如何对连续性数据进行离散化处理