ImageVerifierCode 换一换
格式:DOCX , 页数:17 ,大小:423.63KB ,
资源ID:4541156      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4541156.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于 Jupyter 的特征工程手册之数据预处理二.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于 Jupyter 的特征工程手册之数据预处理二.docx

1、基于 Jupyter 的特征工程手册之数据预处理二本项目将探讨数据预处理部分:介绍了如何利用 scikit-learn 处理静态的连续变量,利用 Category Encoders 处理静态的类别变量以及利用 Featuretools 处理常见的时间序列变量。特征工程的数据预处理我们将分为三大部分来介绍: 静态连续变量 静态类别变量 时间序列变量本文将介绍静态类别变量的数据预处理(上部分,即1.2.1-1.2.6)。下面将结合 Jupyter,使用 sklearn,进行详解。1.2Static Categorical Variables 静态类别变量真实世界的数据集还往往包含类别特征。但是由于

2、scikit-learn中的模型只能处理数值特征,因此我们需要将类别特征编码为数值特征但是,很多新的模型开始直接提供类别变量支持,例如lightGBM和Catboost。这里我们使用category_encoders包,因为它涵盖了更多的编码方法。1.2.1Ordinal Encoding 序数编码序数编码将类别变量转化为一列序数变量,包含从1到类别数量之间的整数1.2.2One-hot Encoding 独热编码Scikit-learn中也提供来独热编码函数,其可以将具有n_categories个可能值的一个分类特征转换为n_categories个二进制特征,其中一个为1,所有其他为0在ca

3、tegory_encoders中,它包含了附加功能,即指示缺失或未知的值。在这里,我们继续使用category_encodersencoder = OneHotEncoder(cols=Sex, Type, handle_unknown=indicator, handle_missing=indicator, use_cat_names=True).fit(train_set,train_y) # 在训练集上训练encoded_train = encoder.transform(train_set) # 转换训练集encoded_test = encoder.transform(test_se

4、t) # 转换测试集# 将 handle_unknown设为indicator,即会新增一列指示未知特征值# 将 handle_missing设为indicator,即会新增一列指示缺失值# 其他的handle_unknown/handle_missing 的选择为:# error:即报错; return_nan:即未知值/缺失之被标记为nan; value:即未知值/缺失之被标记为0# 以测试集结果为例encoded_test# 在独热编码中: # 变量 Sex = 变为了4个新变量: male = 1 ,0 ,0, 0;# female = 0 ,1 ,0, 0;# 未知 = 0 ,0 ,

5、0, 1;# 缺失 = 0, 0, 1, 0; # 变量 Type = 变为了5个新变量: 10 = 1, 0, 0, 0, 0;# 20 = 0, 1, 0, 0, 0;, # 15 = 0, 0, 1, 0, 0;# 未知 = 0, 0, 0, 0, 1;# 缺失 = 0, 0, 0, 1, 0;1.2.3Hashing Encoding 哈希编码哈希编码基于特征哈希的方法。它将哈希函数应用于变量,将任意数量的变量以一定的规则映射到给定数量的变量。特征哈希可能会导致要素之间发生冲突。但哈希编码的优点是它不需要制定和维护原变量与新变量之间的映射关系。因此,哈希编码器的大小及复杂程度不随数据类

6、别的增多而增多。import numpy as npimport pandas as pdfrom category_encoders.hashing import HashingEncoder# category_encoders 直接支持dataframe# 随机生成一些训练集train_set = pd.DataFrame(np.array(male,10,female, 20, male,10, female,20,female,15), columns = Sex,Type)train_y = np.array(False, True, True, False, False)# 随机

7、生成一些测试集, 并有意让其包含未在训练集出现过的类别与缺失值test_set = pd.DataFrame(np.array(female,20,male, 20, others,15, male,20,female,40, male, 25), columns = Sex,Type)test_set.loc4,Type = np.nantrain_set # 原始训练集test_set # 原始测试集encoder = HashingEncoder(cols=Sex, Type, n_components = 5).fit(train_set,train_y)encoded_train =

8、 encoder.transform(train_set) # 转换训练集encoded_test = encoder.transform(test_set) # 转换测试集# 将两列的数据集哈希编码为5列# 哈希编码结果与训练集/测试集中的内容无关# 只要列名匹配,我们就可以在任何新数据集上使用哈希编码方法# 编码结果仅由哈希函数确定# 通常哈希编码应用于更高和更稀疏的维空间,这里以两个变量作为哈希编码的例子# 以测试集结果为例encoded_testencoded_train # 训练集结果1.2.4Helmert Encoding Helmert 编码Helmert编码通常在计量经济学中

9、使用。在Helmert编码(分类特征中的每个值对应于Helmert矩阵中的一行)之后,线性模型中编码后的变量系数可以反映在给定该类别变量某一类别值的情形下因变量的平均值与给定该类别其他类别值的情形下因变量的平均值的差值。在category_encoders包中实现的Helmert编码为反向Helmert编码。train_set # 原始训练集test_set # 原始测试集encoder = HelmertEncoder(cols=Sex, Type, handle_unknown=indicator, handle_missing=indicator).fit(train_set,train

10、_y) # 在训练集上训练encoded_train = encoder.transform(train_set) # 转换训练集encoded_test = encoder.transform(test_set) # 转换测试集# 将 handle_unknown设为indicator,即会新增一列指示未知特征值# 将 handle_missing设为indicator,即会新增一列指示缺失值# 其他的handle_unknown/handle_missing 的选择为:# error:即报错; return_nan:即未知值/缺失之被标记为nan; value:即未知值/缺失之被标记为0#

11、 以测试集结果为例encoded_test# 在Helmert编码中: # 变量 Sex = 变为了4个新变量(包含常数项): male = 1. -1. -1. -1.;# female = 1. 1. -1. -1.;# 未知 = 1. 0. 0. 3.;# 缺失 = 1. 0. 2. -1.; # 变量 Type = 变为了5个新变量(包含常数项): 10 = 1. -1. -1. -1. -1.;# 20 = 1. 1. -1. -1. -1.;, # 15 = 1. 0. 2. -1. -1.;# 未知 = 1. 0. 0. 0. 4.;# 缺失 = 1. 0. 0. 3. -1.;

12、# 可以通过如下代码计算变量Type的Helmert 矩阵from patsy.contrasts import Helmertlevels = 1,2,3,4,5 # 3个变量值 + 1个未知值 + 1个缺失值contrast = Helmert().code_with_intercept(levels)print(contrast.matrix) # 第一列为常数项encoded_train # 训练集结果1.2.5Sum (Deviation) Encoding 偏差编码偏差编码也通常在计量经济学中被使用。偏差编码后,线性模型的系数可以反映该给定该类别变量值的情况下因变量的平均值与全局因

13、变量的平均值的差异。train_set # 原始训练集test_set # 原始测试集# 可以通过如下代码计算变量Type的Deviation 矩阵from patsy.contrasts import Sumlevels = 1,2,3,4,5 # 3个变量值 + 1个未知值 + 1个缺失值contrast = Sum().code_with_intercept(levels)print(contrast.matrix) # 第一列为常数项encoded_train # 训练集结果1.2.6Target Encoding 目标编码目标编码是一种不仅基于特征值本身,还基于相应因变量的类别变量编

14、码方法。对于分类问题:将类别特征替换为给定某一特定类别值的因变量后验概率与所有训练数据上因变量的先验概率的组合。对于连续目标:将类别特征替换为给定某一特定类别值的因变量目标期望值与所有训练数据上因变量的目标期望值的组合。该方法严重依赖于因变量的分布,但这大大减少了生成编码后特征的数量。公式:其中min_samples_leaf和smoothing是用户定义的参数;min_samples_leaf:计算类别平均值时的最小样本数(即若该类别出现次数少,则将被忽略),用以控制过拟合; smoothing:平衡分类平均值与先验平均值的平滑系数。其值越高,则正则化越强;𝑋𝑘

15、;是类别特征X中类别为k的编码值;Prior Prob:目标变量的先验概率/期望;n:类别特征X中,类别为k的样本数;𝑛+:不仅在类别特征X中具有类别k,而且具有正结果的样本数(分类问题);import numpy as npimport pandas as pdfrom category_encoders.target_encoder import TargetEncoder# category_encoders 直接支持dataframe# 随机生成一些训练集train_set = pd.DataFrame(np.array(male,10,female, 20, male

16、,10, female,20,female,15), columns = Sex,Type)train_y = np.array(False, True, True, False, False)# 随机生成一些测试集, 并有意让其包含未在训练集出现过的类别与缺失值test_set = pd.DataFrame(np.array(female,20,male, 20, others,15, male,20,female,40, male, 25), columns = Sex,Type)test_set.loc4,Type = np.nantrain_set # 原始训练集test_set #

17、原始测试集# 验证一下计算的结果,在测试集中,male类别的编码值为 0.473106prior = train_y.mean() # 先验概率min_samples_leaf = 1.0 # 默认为1.0smoothing = 1.0 # 默认为1.0n = 2 # 训练集中,两个样本包含male这个标签n_positive = 1 # 在训练集中,这两个包含male标签的样本中仅有一个有正的因变量标签𝑠𝑚𝑜𝑜𝑣𝑒 = 1 / (1 + np.exp(-(n - min_samples_leaf) / smoothing)male_encode = prior * (1-𝑠𝑚𝑜𝑜𝑣𝑒) + 𝑠𝑚𝑜𝑜𝑣𝑒 * n_positive/nmale_encode # return 0.4731058578630005,与要验证的值吻合encoded_train # 训练集结果

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1