特征降维

学习目标

  • 知道特征选择的嵌入式、过滤式以及包裹氏三种方式

  • 应用VarianceThreshold实现删除低方差特征

  • 了解相关系数的特点和计算

  • 应用相关性系数实现特征选择

降维

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

  • 降低随机变量的个数

  • 相关特征(correlated feature):相对湿度与降雨量之间的相关等等

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

降维的两种方式

  • 特征选择

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

特征选择

什么是特征选择

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

方法:

  • Filter(过滤式):主要探究特征本身特点、特征与特征和目标值之间关联

    • 方差选择法:低方差特征过滤
    • 相关系数
  • Embedded (嵌入式):算法自动选择特征(特征与目标值之间的关联)

    • 决策树:信息熵、信息增益
    • 正则化:L1、L2
    • 深度学习:卷积等
  • Wrapper (包裹式)

模块

sklearn.feature_selection

过滤式

低方差特征过滤

删除低方差的一些特征,前面讲过方差的意义。再结合方差的大小来考虑这个方式的角度。

  • 特征方差小:某个特征大多样本的值比较相近

  • 特征方差大:某个特征很多样本的值都有差别

API

  • sklearn.feature_selection.VarianceThreshold(threshold = 0.0)

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

数据计算

我们对某些股票的指标特征之间进行一个筛选

一共这些特征

pe_ratio,pb_ratio,market_cap,return_on_asset_net_profit,du_return_on_equity,ev,earnings_per_share,revenue,total_expense
index,pe_ratio,pb_ratio,market_cap,return_on_asset_net_profit,du_return_on_equity,ev,earnings_per_share,revenue,total_expense,date,return
0,000001.XSHE,5.9572,1.1818,85252550922.0,0.8008,14.9403,1211444855670.0,2.01,20701401000.0,10882540000.0,2012-01-31,0.027657228229937388
1,000002.XSHE,7.0289,1.588,84113358168.0,1.6463,7.8656,300252061695.0,0.326,29308369223.2,23783476901.2,2012-01-31,0.08235182370820669
2,000008.XSHE,-262.7461,7.0003,517045520.0,-0.5678,-0.5943,770517752.56,-0.006,11679829.03,12030080.04,2012-01-31,0.09978900335112327
3,000060.XSHE,16.476,3.7146,19680455995.0,5.6036,14.617,28009159184.6,0.35,9189386877.65,7935542726.05,2012-01-31,0.12159482758620697
4,000069.XSHE,12.5878,2.5616,41727214853.0,2.8729,10.9097,81247380359.0,0.271,8951453490.28,7091397989.13,2012-01-31,-0.0026808154146886697
def variance_demo():"""过滤低方差特征:return:"""# 1、获取数据data = pd.read_csv("factor_returns.csv")data = data.iloc[:, 1: -2]print(data)# 2、实例化一个转换器transfer = VarianceThreshold(threshold=5)# 3、调用fit_transformdata_new = transfer.fit_transform(data)print("data_new", data_new, data_new.shape)return Noneif __name__ == '__main__':# 低方差特征过滤variance_demo()

相关系数

皮尔逊相关系数(Pearson Correlation Coefficient): 反映变量之间相关关系密切程度的统计指标

公式计算案例(了解,不用记忆)

公式:

比如说我们计算年广告费投入与月均销售额

= 0.9942

所以我们最终得出结论是广告投入费与月平均销售额之间有高度的正相关关系。

特点

相关系数的值介于–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为高度线性相关

这个符号:|r|为r的绝对值, |-5| = 5

API

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

主成分分析

学习目标

  • 应用PCA实现特征的降维

  • 应用:用户与物品类别之间主成分分析

什么是主成分分析(PCA)

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

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

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

那么更好的理解这个过程呢?我们来看一张图

API

  • sklearn.decomposition.PCA(n_components=None)

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

数据计算

[[2,8,4,5],
[6,3,0,8],
[5,4,9,1]]
def pca():"""主成分分析进行降维:return:"""# 信息保留70%pca = PCA(n_components=0.7)data = pca.fit_transform([[2, 8, 4, 5], [6, 3, 0, 8], [5, 4, 9, 1]])print(data)return None

案例:探究用户对物品类别的喜好细分降维

数据

  • order_products__prior.csv:订单与商品信息

    • 字段:order_id, product_id, add_to_cart_order, reordered
  • products.csv:商品信息

    • 字段:product_id, product_name, aisle_id, department_id
  • orders.csv:用户的订单信息

    • 字段:order_id,user_id,eval_set,order_number,….
  • aisles.csv:商品所属具体物品类别

    • 字段: aisle_id, aisle

分析

  • 合并表,使得user_id与aisle在一张表当中

  • 进行交叉表变换

  • 进行降维

def pca_case_study():""":return: """# 去读四张表的数据prior = pd.read_csv("./instacart/order_products__prior.csv")products = pd.read_csv("./instacart/products.csv")orders = pd.read_csv("./instacart/orders.csv")aisles = pd.read_csv("./instacart/aisles.csv")print(prior)# 合并四张表mt = pd.merge(prior, products, on=['product_id', 'product_id'])mt1 = pd.merge(mt, orders, on=['order_id', 'order_id'])mt2 = pd.merge(mt1, aisles, on=['aisle_id', 'aisle_id'])# pd.crosstab 统计用户与物品之间的次数关系(统计次数)cross = pd.crosstab(mt2['user_id'], mt2['aisle'])# PCA进行主成分分析pc = PCA(n_components=0.95)data = pc.fit_transform(cross)print(data)return None

【机器学习】特征降维相关推荐

  1. 机器学习--特征降维方法总结

    本篇博文主要总结一下机器学习里面特征降维的方法,以及各种方法之间的联系和区别. 机器学习中我个人认为有两种途径可以来对特征进行降维,一种是特征抽取,其代表性的方法是PCA,SVD降维等,另外一个途径就 ...

  2. 机器学习-特征工程中的特征降维

    对于一个机器学习问题,数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限.由此可见,数据和特征在模型的整个开发过程中是比较重要.特征工程,顾名思义,是对原始数据进行一系列工程处理,将其提炼为 ...

  3. 机器学习-特征处理/归一化/标准化/降维03

    归一化 from sklearn.preprocessing import MinMaxScaler def mm(): # 归一化处理mm = MinMaxScaler()data = mm.fit ...

  4. [学习笔记] [机器学习] 8. 聚类算法(聚类算法:K-means、K-means++;聚类算法评估;特征降维:特征选择(Pearson相关系数、Spearman相关系数)、PCA主成分分析)

    视频链接 数据集下载地址:无需下载 1. 聚类算法简介 学习目标: 掌握聚类算法实现过程 知道 K-means 算法原理 知道聚类算法中的评估模型 说明 K-means 的优缺点 了解聚类中的算法优化 ...

  5. 基于Python的自动特征工程——教你如何自动创建机器学习特征

    作者 | William Koehrsen 译者 | 王天宇 编辑 | Jane 出品 | AI科技大本营 [导读]如今机器学习正在从人工设计模型更多地转移到自动优化工作流中,如 H20.TPOT 和 ...

  6. 机器学习-特征工程中的特征选择

    对于一个机器学习问题,数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限.由此可见,数据和特征在模型的整个开发过程中是比较重要.特征工程,顾名思义,是对原始数据进行一系列工程处理,将其提炼为 ...

  7. 机器学习-特征工程中的数据预处理

    对于一个机器学习问题,数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限.由此可见,数据和特征在模型的整个开发过程中是比较重要.特征工程,顾名思义,是对原始数据进行一系列工程处理,将其提炼为 ...

  8. 【完结篇】专栏 | 基于 Jupyter 的特征工程手册:特征降维

    作者:陈颖祥.杨子晗 编译:AI有道 经过数据预处理和特征选择,我们已经生成了一个很好的特征子集.但是有时该子集可能仍然包含过多特征,导致需要花费太多的计算能力用以训练模型.在这种情况下,我们可以使用 ...

  9. Feature Tools:可自动构造机器学习特征的Python库

    选自Towards data science,作者:William Koehrsen,机器之心编译. 目前,很多机器学习项目的模型选择开始转向自动化,而特征工程仍然主要以人工为主.这个过程的重要性可能 ...

最新文章

  1. 阿里大佬分享API网关在微服务架构中的应用
  2. 南召天气预报软件测试,南召天气预报15天
  3. c++ vector最大值_第14章 火柴人的无尽冒险(《C和C++游戏趣味编程》配套教学视频)...
  4. 电商顾客满意的五大决定因素
  5. 需要自我总结的知识点
  6. 六、Hive中的内部表、外部表、分区表和分桶表
  7. C# 串口操作系列(5)--通讯库雏形
  8. vue-router 报错:Navigation cancelled from“/…“ to “/…“ with a new navigation.
  9. 一个人独立完成一个网站上线的前前后后
  10. 首次体验 Live Writter
  11. Jdk(1.6和1.8)中英文Api文档
  12. IPD不仅是流程更是管理体系(附华为IPD培训资料)
  13. Python高级配色 RGB
  14. svn拉取文件失败_TortoiseSVN常见的错误信息与解决方法
  15. 虚拟机找不到文件路径
  16. 遗传算法求解一元函数最大值
  17. JS逆向 --- 易盾有感滑块
  18. qt 判断ctrl键被按下_直播 | 当世界被按下暂停键,幸有阅读可慰藉
  19. 第一次软件工程作业(One who wants to wear the crown, Bears the crown.)
  20. unity+opencv实时检测人脸及眼睛区域检测

热门文章

  1. 深度学习下的点击率预测:交互与建模
  2. 最新综述:用于组合优化的强化学习
  3. 人工智能:物体检测之Faster RCNN模型
  4. AIProCon在线大会笔记之阿里达摩院司罗:为商业搭建语言桥梁
  5. Object类与Objects类总结
  6. display none的元素重新展示如何撑开页面_【第1962期】巧用 display: contents 增强页面语义...
  7. uniCloud云函数——微信小程序登录凭证校验[code2Session](即:使用 code 换取 openid 和 session_key 等信息)解决方案
  8. JAVA——Scanner类绑定System.in后调用close()方法所引发的错误及其解决方案
  9. [USACO4.2]工序安排Job Processing
  10. 那天的延长线在今天β