特征工程

1.1 特征工程概述

参考博主
定义:将原始数据转换为更能代表预测模型潜在问题的特征的过程,通过挑选最相关的特征,提取特征以及创造特征实现,其中创造特征又能通过降维的算法实现
目的:降低计算成本,提高模型上限
面对的问题
数据之间的相关性、特征与标签无关,特征过多或者过少,无法表现出该有的数据现象以及不能展示数据的真实面貌

1.2 特征选择
当数据预处理完成后,我们需要选择有意义的特征输入机器学习的算法和模型进行训练。

根据特征选择的形式又可以将特征选择方法分为3种:

  • Filter:过滤法,按照发散性或者相关性对各个特征进行评分,设定阈值或者待选择阈值的个数,选择特征。
  • Wrapper:包装法,根据目标函数(通常是预测效果评分),每次选择若干特征,或者排除若干特征。
  • Embedded:嵌入法,先使用某些机器学习的算法和模型进行训练,得到各个特征的权值系数,根据系数从大到小选择特征。类似于Filter方法,但是是通过训练来确定特征的优劣。

我们使用sklearn中的feature_selection库来进行特征选择

1.21 Filter

  • 方差选择法
    使用方差选择法,先要计算各个特征的方差,然后根据阈值,选择方差大于阈值的特征。使用feature_selection库的VarianceThreshold类来选择特征的代码如下:

    from sklearn.feature_selection import VarianceThreshold
    
    #方差选择法,返回值为特征选择后的数据
    #参数threshold为方差的阈值
    VarianceThreshold(threshold=3).fit_transform(iris.data)``
    
  • 相关系数法
    使用相关系数法,先要计算各个特征对目标值的相关系数以及相关系数的P值。用feature_selection库的SelectKBest类结合相关系数来选择特征的代码如下:

    1 from sklearn.feature_selection import SelectKBest
    2 from scipy.stats import pearsonr
    3 
    4 #选择K个最好的特征,返回选择特征后的数据
    5 #第一个参数为计算评估特征是否好的函数,该函数输入特征矩阵和目标向量,输出二元组(评分,P值)的数组,数组第i项为第i个特征的评分和P值。在此定义为计算相关系数
    6 #参数k为选择的特征个数
    7 SelectKBest(lambda X, Y: array(map(lambda x:pearsonr(x, Y), X.T)).T, k=2).fit_transform(iris.data, iris.target)
    
  • 卡方检验
    经典的卡方检验是检验定性自变量对定性因变量的相关性。

     from sklearn.feature_selection import SelectKBest
    2 from sklearn.feature_selection import chi2
    3 
    4 #选择K个最好的特征,返回选择特征后的数据
    5 SelectKBest(chi2, k=2).fit_transform(iris.data, iris.target)
    
    

1.3 Wrapper

  • 递归特征消除法
    递归消除特征法使用一个基模型来进行多轮训练,每轮训练后,消除若干权值系数的特征,再基于新的特征集进行下一轮训练。使用feature_selection库的RFE类来选择特征的代码如下:

    from sklearn.feature_selection import RFE
    2 from sklearn.linear_model import LogisticRegression
    3 
    4 #递归特征消除法,返回特征选择后的数据
    5 #参数estimator为基模型
    6 #参数n_features_to_select为选择的特征个数
    7 RFE(estimator=LogisticRegression(), n_features_to_select=2).fit_transform(iris.data, iris.target)
    

1.4 Embedded

  • 基于树模型的特征选择法
    树模型中GBDT也可用来作为基模型进行特征选择,使用feature_selection库的SelectFromModel类结合GBDT模型,来选择特征的代码如下:
    1 from sklearn.feature_selection import SelectFromModel
    2 from sklearn.ensemble import GradientBoostingClassifier
    3 
    4 #GBDT作为基模型的特征选择
    5 SelectFromModel(GradientBoostingClassifier()).fit_transform(iris.data, iris.target)
    

2、降维

  • 主成分分析法(PCA)
    使用decomposition库的PCA类选择特征的代码如下:

     from sklearn.decomposition import PCA
    
     #主成分分析法,返回降维后的数据
     #参数n_components为主成分数目
    PCA(n_components=2).fit_transform(iris.data)
    
  • 线性判别分析法(LDA)

    from sklearn.lda import LDA
    
    #线性判别分析法,返回降维后的数据
    #参数n_components为降维后的维数
    LDA(n_components=2).fit_transform(iris.data, iris.target)
    
内容概要:本文系统介绍了算术优化算法(AOA)的基本原理、核心思想及Python实现方法,并通过图像分割的实际案例展示了其应用价值。AOA是一种基于种群的元启发式算法,其核心思想来源于四则运算,利用乘除运算进行全局勘探,加减运算进行局部开发,通过数学优化器加速函数(MOA)和数学优化概率(MOP)动态控制搜索过程,在全局探索与局部开发之间实现平衡。文章详细解析了算法的初始化、勘探与开发阶段的更新策略,并提供了完整的Python代码实现,结合Rastrigin函数进行测试验证。进一步地,以Flask框架搭建前后端分离系统,将AOA应用于图像分割任务,展示了其在实际工程中的可行性与高效性。最后,通过收敛速度、寻优精度等指标评估算法性能,并提出自适应参数调整、模型优化和并行计算等改进策略。; 适合人群:具备一定Python编程基础和优化算法基础知识的高校学生、科研人员及工程技术人员,尤其适合从事人工智能、图像处理、智能优化等领域的从业者;; 使用场景及目标:①理解元启发式算法的设计思想与实现机制;②掌握AOA在函数优化、图像分割等实际问题中的建模与求解方法;③学习如何将优化算法集成到Web系统中实现工程化应用;④为算法性能评估与改进提供实践参考; 阅读建议:建议读者结合代码逐行调试,深入理解算法流程中MOA与MOP的作用机制,尝试在不同测试函数上运行算法以观察性能差异,并可进一步扩展图像分割模块,引入更复杂的预处理或后处理技术以提升分割效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值