【Python机器学习】特征工程含义、方法、对应函数详解(图文解释)

简介: 【Python机器学习】特征工程含义、方法、对应函数详解(图文解释)

觉得有帮助请点赞关注收藏~~~

特征工程

特征工程的目标是从实例的原始数据中提取出供模型训练的合适特征。在掌握了机器学习的算法之后,特征工程就是最具创造性的活动了。 特征的提取与问题的领域知识密切相关

一般来说,进行特征工程,要先从总体上理解数据,必要时可通过可视化来帮助理解,然后运用领域知识进行分析和联想,处理数据提取出特征。并不是所有提取出来的特征都会对模型预测有正面帮助,还需要通过预测结果来对比分析。

进行特征工程,通常要用到numpy、pandas、sklearn、matplotlib等扩展库。

数据总体分析

得到样本数据后,先要对数据的总体概况进行初步分析。分析数据的总体概况,一般是根据经验进行,没有严格的步骤和程序,内容主要包括查看数据以及数据的维度、属性和类型,对数据进行简要统计,分析数据类别分布等。

对于数值型的特征,数据统计常从平均值、最小值、最大值、标准差、较小值、中值、较大值等等指标入手。对于对象型的类别特征,数据统计常从唯一值个数、众数及其次数等指标入手。

部分对应函数如下

数据预处理

1.独热编码

对独热编码的处理,sklearn在preprocessing包中提供了OneHotEncoder类。深度学习框架也提供了类似处理方法。

2.特征值变换

为了适合算法需要,有时需要对特征值进行某种变换。常用的变换包括平方、开方、取对数和差分运算等,即:

3.特征值分布处理

有些算法对特征的取值分布比较敏感,需要预先对取值的分布进行调整。

如样本的第j个特征x^(j)的均值估计为meanx^(j)=1/m∑_i=1^m▒x_i^(j),方差估计为varx^(j)=1/m∑_i=1^m▒(x_i^(j)−meanx^(j))^2,则x_i^(j)的标准化操作为:

实现标准化操作的有sklearn.preprocessing包的scale()函数和StandardScaler类。

正则化(Normalization)是对样本进行的操作,它先计算每个样本的所有特征值的p范数,然后将该样本中的每个特征除以该范数,其结果是使得每个样本的特征值组成的向量的p范数等于1。范数的计算:

实现正则化操作的有sklearn.preprocessing包的normalize()函数和Normalizer()类。

4.缺失数据处理

有的算法能够自己处理缺失值。

当使用不能处理缺失值的算法时,或者是想自已处理缺失值时,有以下两种方法。一是删除含有缺失的样本或者特征,这种方法会造成信息损失,可能会训练出不合理的模型。二是补全缺失值,这是常用的方法,即用某些值来代替缺失值。补全缺失值的目的是想最大限度地利用数据,以提高预测成功率。

对于补全缺失值,有两种做法。

一种方法是将所有的缺失值都分为一类,相当于将缺失值的这些样本作为一个子集来训练。

另一种方法是所谓的插补(imputation),即用最可能的值来代替缺失值。插补的做法,实际上也是预测,也就是说,是采用机器学习的方法来补全机器学习所需要的样本。

常用的插补方法有:1)均值、众数插补,对于连续型特征,可采用均值来插补缺失数据,对于离散性的特征,可采用众数来插补缺失数据。2)建模预测,利用其它特征值来建模预测缺失的特征值,它的做法与机器学习的方法完全一样,将缺失特征作为待预测的标签,将未缺失的样本划分训练集和验证集并训练模型。3)插值,利用本特征的其它值来建模预测缺失值,常用的方法是拉格朗日插值法和牛顿插值法

在scipy.interpolate模块中提供了插值函数。

异常数据是明显偏离其余值的特征值。异常数据也称为离群点。通过统计分析可以发现离群点。统计分析中,常采用所谓的3σ原则来筛选离群点。3σ原则是正态分布中,与均值超过3倍标准差的值。在正态分布的假设下,距离平均值3σ之外的值出现的概率要小于0.003,属于极个别的小概率事件。

如果是合理的异常值,则不需要处理,可以直接进行训练。如果是不合理的异常值,可删除该值,并按缺失值的处理方法进行处理。

特征选择

1.根据特征取值的变化

如果某个特征取值的方差很小,也就是说该特征的值变化很小,那么可以认为它对标签值的影响很小,因此,必要时可以抛弃该特征。以极端的情况来举例,如果某特征取值的方差为0,那么说明所有样本的该特征的值都相同,显然,该特征对模型建立没有贡献。

2.根据特征与标签的相关性

可将所有样本的某特征的取值看成一个向量。同样也可将所有样本的标签值看成一个向量。因此,可以用向量的相关性指标(协方差、相关系数、相关距离等)来度量特征取值与标签值的相关程度。

条件概率也是体现相关性的指标。通过比较标签取值的概率值以及在某特征条件下标签取值的概率值,可以知道标签与该特征是否独立。

与标签相关性弱的特征可以在必要时不采用。

3.根据不同特征之间的相关性

如果两个特征有强烈的相关性,那么会出现两列系数不固定的情况,即在稳定标签值的情况下,其中一列的系数的升高可以通过另一列系数的降低来弥补,因此会出现差异较大的模型,也称为模型的方差较大。

特征强相关时,应该去掉其中多余的特征。

4.用模型尝试去特征

每次用去掉一个特征剩下的数据去训练模型,可以比较出哪个特征对模型的影响最小,并将其去掉。

5.根据某些算法对特征的打分

有的算法可以分析出特征的重要程度,如决策树和随机森林算法。根据分析结论选择特征即可。

创作不易 觉得有帮助请点赞关注收藏~~~

相关文章
|
5天前
|
机器学习/深度学习 数据采集 算法
机器学习在医疗诊断中的前沿应用,包括神经网络、决策树和支持向量机等方法,及其在医学影像、疾病预测和基因数据分析中的具体应用
医疗诊断是医学的核心,其准确性和效率至关重要。本文探讨了机器学习在医疗诊断中的前沿应用,包括神经网络、决策树和支持向量机等方法,及其在医学影像、疾病预测和基因数据分析中的具体应用。文章还讨论了Python在构建机器学习模型中的作用,面临的挑战及应对策略,并展望了未来的发展趋势。
27 1
|
1月前
|
Python
Python之函数详解
【10月更文挑战第12天】
Python之函数详解
|
17天前
|
机器学习/深度学习 数据采集 数据处理
谷歌提出视觉记忆方法,让大模型训练数据更灵活
谷歌研究人员提出了一种名为“视觉记忆”的方法,结合了深度神经网络的表示能力和数据库的灵活性。该方法将图像分类任务分为图像相似性和搜索两部分,支持灵活添加和删除数据、可解释的决策机制以及大规模数据处理能力。实验结果显示,该方法在多个数据集上取得了优异的性能,如在ImageNet上实现88.5%的top-1准确率。尽管有依赖预训练模型等限制,但视觉记忆为深度学习提供了新的思路。
22 2
|
27天前
|
测试技术 数据安全/隐私保护 Python
探索Python中的装饰器:简化和增强你的函数
【10月更文挑战第24天】在Python编程的海洋中,装饰器是那把可以令你的代码更简洁、更强大的魔法棒。它们不仅能够扩展函数的功能,还能保持代码的整洁性。本文将带你深入了解装饰器的概念、实现方式以及如何通过它们来提升你的代码质量。让我们一起揭开装饰器的神秘面纱,学习如何用它们来打造更加优雅和高效的代码。
|
29天前
|
弹性计算 安全 数据处理
Python高手秘籍:列表推导式与Lambda函数的高效应用
列表推导式和Lambda函数是Python中强大的工具。列表推导式允许在一行代码中生成新列表,而Lambda函数则是用于简单操作的匿名函数。通过示例展示了如何使用这些工具进行数据处理和功能实现,包括生成偶数平方、展平二维列表、按长度排序单词等。这些工具在Python编程中具有高度的灵活性和实用性。
|
1月前
|
Python
python的时间操作time-函数介绍
【10月更文挑战第19天】 python模块time的函数使用介绍和使用。
31 4
|
1月前
|
存储 Python
[oeasy]python038_ range函数_大小写字母的起止范围_start_stop
本文介绍了Python中`range`函数的使用方法及其在生成大小写字母序号范围时的应用。通过示例展示了如何利用`range`和`for`循环输出指定范围内的数字,重点讲解了小写和大写字母对应的ASCII码值范围,并解释了`range`函数的参数(start, stop)以及为何不包括stop值的原因。最后,文章留下了关于为何`range`不包含stop值的问题,留待下一次讨论。
22 1
|
1月前
|
安全 数据处理 数据安全/隐私保护
python中mod函数怎么用
通过这些实例,我们不仅掌握了Python中 `%`运算符的基础用法,还领略了它在解决实际问题中的灵活性和实用性。在诸如云计算服务提供商的技术栈中,类似的数学运算逻辑常被应用于数据处理、安全加密等关键领域,凸显了基础运算符在复杂系统中的不可或缺性。
22 0
|
6月前
|
机器学习/深度学习 存储 搜索推荐
利用机器学习算法改善电商推荐系统的效率
电商行业日益竞争激烈,提升用户体验成为关键。本文将探讨如何利用机器学习算法优化电商推荐系统,通过分析用户行为数据和商品信息,实现个性化推荐,从而提高推荐效率和准确性。
242 14
|
6月前
|
机器学习/深度学习 算法 搜索推荐
Machine Learning机器学习之决策树算法 Decision Tree(附Python代码)
Machine Learning机器学习之决策树算法 Decision Tree(附Python代码)
下一篇
无影云桌面