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
特征工程
特征工程是根据原始特征创建新特征的过程,目的是让特征更准确地预测未知数据,这需要我们对数据集有很深入的理解和把握。
比如说,如果目标是想要评估一个班级整体的学习情况,那每个学生的考试成绩本身是没有太大参考价值的,而平均值是更好的一个选择。
不同的数据集和模型所采用的特征工程方法是不同的,本文只介绍其中的几个供大家参考。
情景一:分类变量型特征
分类变量一般是文本数据,需要先转化成数字,再输入到模型中,可以通过Pandas和sklearn两种方式实现。
① 调用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
本文为原创文章,版权归知行编程网所有,欢迎分享本文,转载请保留出处!
你可能也喜欢
- ♥ 分析python split()方法的用法和示例代码09/29
- ♥ 为什么python要安装到c盘?10/22
- ♥ python单元测试有什么好处?01/11
- ♥ 用Python写一个嫦娥奔月,中秋快乐03/18
- ♥ 如何查看python的库09/05
- ♥ 如何在python中使用del删除变量?08/31
内容反馈