• 特征降维(特征工程)


    目录

    一、特征选择

    1.低⽅差特征过滤

     2.相关系数

    2.1⽪尔逊相关系数

     2.2斯⽪尔曼相关系数

     二、主成分分析

    1.概念

     2.代码


    降维的方式:特征选择和主成分分析

    一、特征选择

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

    1.低⽅差特征过滤

    特征⽅差⼩:某个特征⼤多样本的值⽐较相近

    特征⽅差⼤:某个特征很多样本的值都有差别

     

    1. import pandas as pd
    2. from sklearn.feature_selection import VarianceThreshold
    3. import numpy as np
    4. data=pd.read_csv("D:\\迅雷下载\\demo\\machineLearnCode\\dimensionalityReduceTest\\factor_returns.csv")
    5. # print(data[:,2]) 报错,列表结构不可以这样写
    6. print(data.shape)
    7. transfer=VarianceThreshold(threshold=10) #训练集差异低于threshold的特征将被删除
    8. transfer_data=transfer.fit_transform(data.iloc[:,1:10])
    9. np.set_printoptions(threshold=np.inf) #打印数据全部都展现出来
    10. print(transfer_data)

     2.相关系数

    2.1⽪尔逊相关系数

    反映变量之间相关关系密切程度的统计指标

    相关系数的值r介于–1与+1之间,即–1≤ r ≤+1。

    其性质如下:

    1.当r>0时,表示两变量正相关,r<0时,两变量为负相关

    2.当|r|=1时,表示两变量为完全相关,当r=0时,表示两变量间⽆相关关系

    3.当0<|r|<1时,表示两变量存在⼀定程度的相关。且|r|越接近1,两变量间线性关系越密切;|r|越接近于0,表示两变 量的线性相关越弱

    4.⼀般可按三级划分:|r|<0.4为低度相关;0.4≤|r|<0.7为显著性相关;0.7≤|r|<1为⾼度线性相关

    1. from scipy.stats import pearsonr
    2. x1 = [12.5, 15.3, 23.2, 26.4, 33.5, 34.4, 39.4, 45.2, 55.4, 60.9]
    3. x2 = [21.2, 23.9, 32.9, 34.1, 42.5, 43.2, 49.0, 52.8, 59.4, 63.5]
    4. print(pearsonr(x1,x2))

     2.2斯⽪尔曼相关系数

    反映变量之间相关关系密切程度的统计指标

     

     其中n为等级个数,d为⼆列成对变量的等级差数

    1.斯⽪尔曼相关系数表明 X (⾃变量) 和 Y (因变量)的相关⽅向。 如果当X增加时, Y 趋向于增加, 斯⽪尔曼相关系数 则为正

    2. 与之前的⽪尔逊相关系数⼤⼩性质⼀样,取值 [-1, 1]之间

    3.斯⽪尔曼相关系数⽐⽪尔逊相关系数应⽤更加⼴泛

    1. from scipy.stats import spearmanr
    2. x1 = [12.5, 15.3, 23.2, 26.4, 33.5, 34.4, 39.4, 45.2, 55.4, 60.9]
    3. x2 = [21.2, 23.9, 32.9, 34.1, 42.5, 43.2, 49.0, 52.8, 59.4, 63.5]
    4. print(spearmanr(x1,x2))

     二、主成分分析

    1.概念

    ⾼维数据转化为低维数据的过程,在此过程中可能会舍弃原有数据、创造新的变量

    作⽤:是数据维数压缩,尽可能降低原数据的维数(复杂度),损失少量信息。

    应⽤:回归分析或者聚类分析当中

     2.代码

    1. from sklearn.decomposition import PCA
    2. data = [[2,8,4,5], [6,3,0,8], [5,4,9,1]]
    3. # 1、实例化PCA, ⼩数——保留多少信息
    4. transfer = PCA(n_components=0.9)
    5. # 2、调⽤fit_transform
    6. data1 = transfer.fit_transform(data)
    7. print(data1)
    8. # 1、实例化PCA, 整数——指定降维到的维数
    9. transfer2 = PCA(n_components=3)
    10. # 2、调⽤fit_transform
    11. data2 = transfer2.fit_transform(data)
    12. print("降维到3维的结果:\n", data2)

     

  • 相关阅读:
    【Docker部署私服仓库Harbor详细教程步骤&镜像拉取&推送到Harbor仓库实战演练应用】
    软考76-上午题-【面向对象技术3-设计模式】-创建型设计模式01
    【Kafka面试】面试题一
    运营商光纤资源管理:管理工具的力量
    environment = environ[‘wsgi.websocket‘] KeyError: ‘wsgi.websocket‘
    【LeetCode刷题】--40.组合总和II
    SAS学习2(data步,input语句,从文件中读取数据)
    FreeMarker快速入门详解
    threehit漏洞复现以及防御
    linux 开通指定端口号解决telnet不通的问题
  • 原文地址:https://blog.csdn.net/herry57/article/details/125461747