首页 > 其他分享 >五.特征工程之特征降维

五.特征工程之特征降维

时间:2023-06-10 12:12:37浏览次数:32  
标签:fit 工程 方差 特征 transform 降维 new data

1.什么是特征降维

降低的对象为二维数组
此处的降维为降低特征的个数
降维是指在某些限定条件下,降低随机变量(特征)个数,得到一组“不相关”主变量的过程
image

降维的效果就是使得特征和特征之间不相关
image
如果相关的特征太多的话会造成数据的冗余的

正是因为在进行训练的时候,我们都是使用特征进行学习。如果特征本身存在问题或者特征之间相关性较强,对于算法学习预测会影响较大

2.两种方法

特征选择
主成分分析(可以理解一种特征提取的方式)

2.1特征选择

2.1.1 定义

数据中包含冗余或相关变量(或称特征、属性、指标等),旨在从原有特征中找出主要特征
image

2.1.2 方法

Filter(过滤式):主要探究特征本身特点、特征与特征和目标值之间关联
方差选择法:低方差特征过滤(比如说是否有爪子这一个特征方差一定很小,过滤掉)
相关系数:特征与特征之间的相关程度(如果两个特征非常相关则可以去掉一个,需要计算相关系数)

Embedded(嵌入式):算法自动选择特征(特征与目标值之间的关联)
决策树:信息熵、信息增益
正则化:L1、L2
深度学习:卷积等

### 2.1.3 API
>**sklearn.feature_selection**
### 2.1.4 过滤式(方差选择法)

删除低方差的一些特征。再结合方差的大小来考虑这个方式的角度
特征方差小:某个特征大多样本的值比较相近
特征方差大:某个特征很多样本的值都有差别

过滤式API

(1)sklearn.feature_selection.VarianceThreshold(threshold = 0.0)
删除所有方差低于threshold的特征
(2)Variance.fit_transform(X)
--------X:numpy array 格式的数据[n_samples,n_features]
-------返回值:训练集差异低于 threshold 的特征将被删除。默认值是保留所有非零方差特征,即删除所有样本中具有相同值的特征。

方法和前面的一样,也是
先实例化一个转化器类
再调用fit_transform

from sklearn.feature_selection import VarianceThreshold
def variance_demo():
    """
    过滤低方差特征
    :return:
    """
    # 1.获取数据
    data=pd.read_csv("factor_returns.csv")
    data=data.iloc[:,1:-2]
    print("data:\n",data)
    # 2.实例化一个转换器类
    transfer=VarianceThreshold(threshold=10)#具体调
    # 3.调用fit_transform
    data_new=transfer.fit_transform(data)
    print("data_new:\n",data_new,data_new.shape)
    return None

2.1.5 相关系数

皮尔逊相关系数(Pearson Correlation Coefficient)
反映变量之间相关关系密切程序的统计指标
如果两个系数相关性很强的话这可以去掉一个

公式
image
特点
相关系数的值介于-1 与+1 之间,即-1 <= r <= +1。其性质如下:
当 r>0 时,表示两变量正相关,r<0 时,两变量为负相关
当|r|=1 时,表示两变量为完全相关,当 r=0 时,表示两变量间无相关关系
当 0<|r|<1 时,表示两变量存在一定程序的相关。且|r|越接近 1,两变量间线性关系越密切;|r|越接近于 0,表示两变量的线性相关越弱
一般可按三级划分:|r|<0.4 为低度相关;0.4<=r<0.7 为显著性相关;0.7<=|r|<1 为高度线性相关

例如:
image
=0.9942
相关系数API

from scipy.stats import pearsonr
x: (N,) array_like y: (N,) array_like
Returns: (Pearson's correlation coefficient, p-value)

代码:算两个变量之间的相关系数

from scipy.stats import pearsonr

def variance_demo():
    """
    过滤低方差特征
    :return:
    """
    # 1.获取数据
    data=pd.read_csv("factor_returns.csv")
    data=data.iloc[:,1:-2]
    print("data:\n",data)
    # 2.实例化一个转换器类
    transfer=VarianceThreshold(threshold=10)
    # 3.调用fit_transform
    data_new=transfer.fit_transform(data)
    print("data_new:\n",data_new,data_new.shape)

    #计算某两个变量之间的相关系数
    r=pearsonr(data["pe_ratio"],data["pb_ratio"])
    print("相关系数:\n",r)
    return None

image

如果两个特征之间的相关系性很高我们应该怎么选择呢
(1)选其中一个
(2)加权求和
(3)主成分分析

2.2主成分分析(PCA)

定义:高维数据转化为低维数据的过程,在此过程中可能会舍弃原有数据、创造新的变量
作用:是数据维数压缩,尽可能降低原数据的维数(复杂度),损失少量信息。
应用:回归分析或者聚类分析

就是将三维的降到二维,它会有一些损失(信息损失了多少),其实一个很直观的反应就是看看我们通过这个二维的图像还能不能看出来这是个水壶

例如这个最后一个降维之后损失的最少,我们还能看出来他是个水壶
image

再例如将这个二维的降到一维(直线)
image
这样做是损失的最少
image
image
API

sklearn.decomposition.PCA(n_components=None)
将数据分解为较低维数空间
n_components:
小数:表示保留百分之多少的信息
整数:减少到多少特征(比如是个2,就是降到二维)
PCA.fit_transform(X) X:numpy array 格式的数据[n_samples,n_features]
返回值:转换后指定维度的 array

步骤
1、实例化一个转换器类
2、调用fit_transform
代码

from sklearn.decomposition import PCA
def pca_demo():
    """
    PCA降维
    :return:
    """
    data = [[2, 8, 4, 5], [6, 3, 0, 8], [5, 4, 9, 1]]

    # 1、实例化一个转换器类
    # transfer = PCA(n_components=2)#指定降到2维
    transfer = PCA(n_components=0.95)#保留95%的信息

    # 2、调用fit_transform
    data_new = transfer.fit_transform(data)
    print("data_new:\n", data_new)

    return None

具体案例

image

用户和类别之间的关系
image

标签:fit,工程,方差,特征,transform,降维,new,data
From: https://www.cnblogs.com/lipu123/p/17470516.html

相关文章

  • 【计算机视觉二】---图像特征提取
    简介计算机视觉图像特征提取是指从图像中提取出具有代表性的特征,以便计算机能够更好地理解和处理图像。常用的特征提取方法包括边缘检测、角点检测、纹理分析、颜色直方图等。在深度学习领域,卷积神经网络(CNN)也被广泛应用于图像特征提取任务。通过CNN,可以自动学习出图像中具有代表性......
  • 潘毅 美国医学与生物工程院院士、欧洲科学与艺术院院士、乌克兰国家工程院外籍院士、
    美国医学与生物工程院院士、欧洲科学与艺术院院士、乌克兰国家工程院外籍院士、生物信息学领域专家 潘毅,1960年5月出生于江苏吴江,汉族,生物信息学领域专家,美国医学与生物工程院院士,欧洲科学与艺术院院士,乌克兰国家工程院外籍院士,英国皇家公共卫生学院院士,中国科学院深圳理工大......
  • Java面试题精华集-Java 工程师进阶知识完全扫盲
    在GitHub/Gitee编辑消息队列面试场景面试官:你好。候选人:你好。(面试官在你的简历上面看到了,呦,有个亮点,你在项目里用过MQ,比如说你用过ActiveMQ)面试官:你在系统里用过消息队列吗?(面试官在随和的语气中展开了面试)候选人:用过的(此时感觉没啥)面试官:那你说一下你们在项目里是......
  • 本文素材整理自网络,由网络工程师俱乐部排版成文,转载请注明出处,侵删。
    ip能ping通,但是就是无法上网,应该大部分网工都遇到过这种情况吧。能ping通,说明ip是能够和网络设备通信的,但是上不了网,就要具体问题具体分析了。今天聊点基础的,ip能ping通但是上不了网,到底是出现了啥问题?01IP冲突所谓的ip冲突,就是由于网络中出现了两个同样的ip地址。使网络很不稳定,有......
  • STM32新建工程
     1.到ST公司官网(www.st.com)下载固件库https://www.st.com/zh/embedded-software/stm32-standard-peripheral-libraries.html2.为了方便管理,新建一个文件夹用来存放项目,否则会显得混乱3.打开Keil5-Project-new μVisionProject-选中刚刚创建的文件夹-给工程文件命名-......
  • 极客时间训练营高级Java工程师体系课2023版2.0
    极客时间训练营高级Java工程师体系课2023版2.0download:3w51xuebccomRedis核心数据结构实战与高性能原理剖析Redis是一款开源的内存数据库,它提供了丰富的数据结构和API,并支持多种数据类型操作。在深入理解Redis核心数据结构实战和高性能原理之前,我们需要了解以下基础知识:Redis数据......
  • 谷歌公开自家「AI+软件工程」框架DIDACT:数千名开发者内部测试,用了都说生产力高
    谷歌公开自家「AI+软件工程」框架DIDACT:数千名开发者内部测试,用了都说生产力高摘要谷歌近日公布了自家的DIDACT(DynamicIntegratedDeveloperACTivity,动态集成开发人员活动)框架,用AI技术增强软件工程,将软件开发的中间状态作为训练数据,辅助开发人员编写、修改代码,并实时了解软件......
  • mybatis逆向工程增强版
    1. 配置环境  123相关配置和基础版一样,在course-23中有详细介绍,这里不做赘述只需要在generatorConfig.xml中修改如下位置即可<!--targetRuntime有两个值:MyBatis3Simple:生成的是基础版,只有基本的增删改查。MyBatis3:生成的是增强版,除了基本的......
  • 20.sw工程图导出cad版本,设置导出比例1:1
    1.选择系统选项 2.选择导出、选择DWG、选择激活......
  • 软件工程|软件测试
    这是GIS开发课的测试部分的知识,看了一下PPT,基本和软工的测试部分是差不多的,这里就放在一起了。测试的基本概念软件测试是保证软件质量,提高软件可靠性的关键。软件测试的目的:发现错误测试与调试比较测试(test)调试(debug)在未知错误的情况下,检查程序代码是否有问......