《Python机器学习基础教程》数据表示与特征工程总结

《Python机器学习基础教程》笔记

       数据是机器学习中很重要的一部分,对于不同的应用,数据的收集方式也会有所不同,一般来说,可分为三种特征类型连续特征分类特征(离散特征)和文本特征

       连续特征是可以用浮点数的大小去衡量,例如像素明暗程度、花的尺寸等;而分类特征通常不是数值,是固定列表中的元素,例如产品的品牌、产品的颜色等;文本特征,即自然语言

       无论数据包含哪种类型的特征,数据表示的方式都会对机器学习模型的性能产生巨大的影响,对某个特定的应用来说,用正确的方式表示数据,对监督模型性能的影响比所选的精确参数还要大。如何找到最佳的数据表示,这个问题就是特征工程。接下来对特征工程中几种常见的操作进行介绍。

注,以下所有涉及模块、函数的内容,默认都是基于Scikit-Learn。且以下的总结旨在对所学过知识的复习巩固,不适用于新手学习哈(o(╥﹏╥)o)


一、One-Hot编码

原理:

将每个特征中出现的所有可能的取值作为新特征,新特征取值为0和1。

重要知识点:

①将数据转换为分类变量的one-hot编码有两种方法:一种是使用pandas,一种是使用Scikit-Learn

csv文件是以逗号作为分隔符

③pandas Series(Series是DataFrame中单列对应的数据类型)的value_counts函数可以显示唯一值及其出现次数。

④pandas中的get_dummies函数可以自动变换所有具有对象类型(比如字符串)的列或所有分类的列。

pandas中的列索引包括范围的结尾,而numpy数组的切片不包括范围的结尾

⑥Scikit-Learn的OneHotEncoder可以指定哪些变量是连续的、哪些变量是离散的。


二、分箱

原理:

将连续特征的输入范围划分成固定个数的箱子(区间),然后将每个数据点用它所在的箱子来表示

重要知识点:

①np.digitize()函数可以记录每个数据点所属的箱子。

②对数据进行分箱操作后,可利用preprocessing模块的OneHotEncoder将这个离散特征变换为one-hot编码。

③对于一个箱子内的所有点,任何模型都会预测相同的值。

决策树可以同时查看多个特征,而分箱通常针对的是单个特征


三、交互特征与多项式特征

原理:

交互特征:多个原始特征的乘积(作为扩展特征)

多项式特征:原始特征的幂级数(作为扩展特征)

重要知识点:

①将多项式特征与线性回归模型一起使用,可以得到经典的多项式回归

②可以调用get_feature_names方法来获取特征的语义。

多项式特征在某些时候可以得到非常平滑的拟合,但高次多项式在边界上或数据很少的区域可能有极端的表现

④PolynomialFeatures中的参数degree = ?的意思是由最多?个原始特征的乘积组成的所有特征。


四、单变量非线性变换

原理:

对数据进行log、exp、sin、cos等非线性运算

重要知识点:

线性模型和神经网络依赖于每个特征的尺度和分布

②log和exp函数可以帮助调节数据的相对比例,在处理具有周期性模式的数据时,sin和cos函数非常有用。

对基于树的模型而言,这种变换并不重要,但对线性模型来说可能至关重要


五、自动化特征选择

原理:

在添加新特征或处理一般的高维数据集时,最后将特征的数量减少到只包含最有用的那些特征,并删除其余特征。如何判断每个特征的重要性,有以下三种基本的策略:

1.单变量统计:计算每个特征和目标值之间的关系是否存在统计显著性,然后选择具有最高置信度的特征。

2.基于模型的特征选择:使用一个监督机器学习模型来判断每个特征的重要性。例如决策树和基于决策树的模型提供了feature_importances_属性线性模型系数的绝对值也可以用于表示特征重要性。

3.迭代特征选择:用不同数量的特征构建一系列模型,两种基本方法:开始时没有特征,然后逐个添加,直到满足某个终止条件;或者从所有特征开始,然后逐个删除特征,直到满足某个终止条件。

重要知识点:

单变量测试的计算速度通常很快,并且不需要构建模型,且完全独立于模型

②在Scikit-Learn中使用单变量特征选择,舍弃参数的方法都是使用阈值来舍弃所有p值过大的特征,计算阈值的方法有SelectKBest和SelectPercentile,前者选择固定数量的k个特征,后者选择固定百分比的特征

③可以用get_support方法来查看哪些特征被选中。

④如果特征量太大以至于无法构建模型,或者许多特征可能完全没有信息量,那么单变量特征选择非常有用。

⑤基于模型的选择同时考虑所有特征,要想使用基于模型的特征选择,需要使用SelectFromModel变换器。

⑤迭代特征选择的计算成本比单变量统计和基于模型的特征选择更高。


六、利用专家知识

原理:

利用经验人工添加一些特征

例如,想要预测机票价格,假设你有价格及日期、航空公司、出发地和目的地的记录,机器学习模型可能从这些记录中构建一个相当不错的模型。但是由经验知,在度假高峰月份和节假日期间,机票价格应该有明显的变化,因此,我们可以人工的添加一项特征:是否是节假日。


        对于线性模型,可能会从分箱、添加多项式和交互项而生成的新特征中大大受益。对于随机森林和SVM,在无需显式扩展特征空间的前提下就可以学习更加复杂的任务。在实践中,所使用的特征以及特征与方法之间的匹配通常是使机器学习方法表现良好的最重要因素。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值