知行编程网知行编程网  2022-04-07 02:00 知行编程网 隐藏边栏 |   抢沙发  63 
文章评分 0 次,平均分 0.0


TUSHARE  金融与技术学习兴趣小组 


编译整理 | 一只小绿怪兽


译者简介:北京第二外国语学院国际商务专业研一在读,目前在学习Python编程和量化投资相关知识。


作者:Datacamp



Machine Learning 机器学习,是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。



它是人工智能的核心,是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域,它主要使用归纳、综合而不是演绎。



上面的官方定义看起来很吓人,简单来说,机器学习的核心是,让机器通过算法从现有数据中学习,然后对新数据做出预测



在利用机器学习模型进行预测之前,非常重要的一步是对要输入的数据进行预处理,也就是本文要介绍的内容,主要包括对数据进行标准化、创建最有代表性的特征、并选择适合模型的最佳特征。



【工具】Python 3

【数据】tushare.pro 、Datacamp

【注意】本文注重的是方法的讲解,请大家灵活掌握。





01


数据清洗



在做任何分析之前,第一步,都是要对数据进行清洗。关于常见的数据清洗方法,在文章《这些方法解决了数据清洗80%的工作量》中已经介绍过了,这里就简单回顾一下。



① 删除某列有缺失值的行





② 用.astype()转换某列的数据类型。





③ 划分训练集和测试集。



我们将数据分成两个部分,训练集用于建立模型,而测试集则用于评估模型的预测能力,这么做的目的是防止模型的过拟合。



sklearn是机器学习中一个常用的Python第三方模块,我们可以直接调用这个模块中的train_test_split【1】函数对数据集进行划分。默认是将数据集大小的75%设置为训练集,25%设置为测试集,如下示例。





在大多情况下,使用train_test_split函数中的默认参数设置不会有什么问题,但如果数据集不是均匀分布的,则划分的训练集和测试集中的数据可能就不具有代表性,会使模型的预测效果出现误差。



这时,分层抽样是一个更好的选择,可以通过设置参数stratify来实现。



下面的示例中,列class里面有100个样本,80个class1和20个class2,我们希望通过分层抽样,得到这样的划分:

【训练集】75个样本,60个class1,15个class2

【测试集】25个样本,20个class1,5个class2






02


数据标准化



当模型属于线性空间模型;数据集中的某个特征方差很大;数据集的特征是连续的且量纲不同;或者存在线性假定的时候,我们需要进行数据标准化处理。



本文主要介绍两种方法,一个是log函数标准化法,另一个是特征缩放法



① log函数标准化法


如果发现数据集中某一列特征的方差很大,可以用log函数进行处理,在Python中log()函数默认是以e为底的对数函数。



从下面的示例中可以观察到,在没有用log()函数进行处理之前,col2列数据的方差很大,但经过log()函数处理之后,两列数据方差的差距明显缩小。





② 特征缩放法


当特征的量纲不同、使用线性模型时,可以用特征缩放的方法进行标准化,目的是把数据转化成标准正态分布,可以通过调用sklearn中的StandardScaler实现。



在如下示例中,可以观察到df中各列内部数据的差距不是很大,但是列与列之间的大小却有明显差距,需要进行标准化处理。






03 


特征工程



特征工程是根据原始特征创建新特征的过程,目的是让特征更准确地预测未知数据,这需要我们对数据集有很深入的理解和把握。



比如说,如果目标是想要评估一个班级整体的学习情况,那每个学生的考试成绩本身是没有太大参考价值的,而平均值是更好的一个选择。



不同的数据集和模型所采用的特征工程方法是不同的,本文只介绍其中的几个供大家参考。



情景一:分类变量型特征



分类变量一般是文本数据,需要先转化成数字,再输入到模型中,可以通过Pandassklearn两种方式实现。



① 调用sklearn中的LabelEncoder函数。





② 调用Pandas中的get_dummies()【2】函数。这里我们导入tushare.pro中的行业数据作为示例进行演示。





情景二:数字型特征



① 取平均值





② 提取日期中的月份





情景三:文本型特征



文本型数据相对会复杂一点,一般来说可以分成两步。第一步,先从文本中提取有效信息,可能是字符串的一部分,也可能是数字,第二步,把它们转化成特征。在下面的示例中,简单介绍了如何正则表达式re提取文本中的数字。






04 


特征选择



特征选择,是指从已有的特征库中,选出一些最有效特征以降低数据集维度的过程,从而最优化模型的预测效果,是提高学习算法性能的一个重要手段。



① 去除冗余特征。


比如,在线性回归模型中,由于假设特征之间是相互独立的,需要删除相关性强的特征。可以直接用.drop()函数删除。





② 主成分分析法降维。


Principal Component Analysis,即主成分分析PCA,是指把多指标合成为少数几个相互无关的综合指标的过程,其中每个主成分都能够反映原始变量的绝大部分信息,而且所含信息互不重复,可以起到降低维度的作用。



主成分分析法是一种数学变换的方法, 它把给定的一组相关变量通过线性变换转成另一组不相关的变量,这些新的变量按照方差依次递减的顺序排列。



同样,我们可以直接调用sklearn中的PCA类【3】。






05 


总结



本文主要介绍了在应用机器学习模型之前的准备工作——数据预处理,包括划分训练集和测试集、数据标准化、特征工程、特征选择这四个部分。

相关的官方文档和参考资料已附在下面,感兴趣的小伙伴可以自行查阅更多内容!



【参考链接】

https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.train_test_split.html【1】

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.get_dummies.html【2】

https://scikit-learn.org/stable/modules/generated/sklearn.decomposition.PCA.html【3】

https://www.datacamp.com/courses/preprocessing-for-machine-learning-in-python【Datacamp】



本篇文章来源于: 菜鸟学Python

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

知行编程网
知行编程网 关注:1    粉丝:1
这个人很懒,什么都没写

发表评论

表情 格式 链接 私密 签到
扫一扫二维码分享