数据的特征工程 入门详细教程(二):特征选择与降维

本文详细介绍了特征选择和降维在数据预处理中的重要作用,包括特征选择的原因,如冗余和噪声问题,以及Filter、Embedded、Wrapper等方法。通过sklearn库展示了特征选择API的使用,并探讨了PCA的原理、目的和在高维度数据中的问题。此外,还提供了一个PCA降维的实例,最后对比了特征选择和降维的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


关于数据特征的简介 数据特征的抽取及处理可见文章:
数据的特征工程 入门详细教程(一):简介 数据特征的抽取及处理

特征选择

  • 特征选择原因
    1. 冗余:部分特征的相关度高,容易消耗计算性能
    2. 噪声:部分特征对预测结果有负影响

特征选择是什么

  • 特征选择就是单纯地从提取到的所有特征中选择部分特征作为训练集特征,特征在选择前和选择后可以改变值、也不改变值,但是选择后的特征维数肯定比选择前小,毕竟我们只选择了其中的一部分特征。
  • 主要方法:
    1. Filter(过滤式): VarianceThreshold
    2. Embedded(嵌入式):正则化、决策树
    3. Wrapper(包裹式)

sklearn 特征选择API

sklearn.feature_selection.VarianceThreshold

语法

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

示例:

from sklearn.preprocessing import MinMaxScaler, StandardScaler
def stand():
    """
    标准化缩放
    :return:
    """
    std = StandardScaler()

    data = std.fit_transform([[ 1., -1., 3.],[ 2., 4., 2.],[ 4., 6., -1.]])

    print(data)

    return None
if __name__ == "__main__":
   var()

结果为:

[[0] [4] [1]]

其他特征选择方法

  • 神经网络

sklearn降维API

sklearn. decomposition 

PCA是什么

  • PCA的本质是一种分析、简化数据集的技术
  • 目的:是数据维数压缩,尽可能降低原数据的维数(复杂度),损失少量信息。
  • 作用:可以削减回归分析或者聚类分析中特征的数量
高维度数据容易出现的问题
  • 特征之间通常是线性相关的

在这里插入图片描述

  • 如果将上述二维坐标的点,投影到X轴或者Y轴时,容易出现点的覆盖,造成数据缺失,所以应该投射在数据损失少的平面上

在这里插入图片描述

在这里插入图片描述

PCA语法

PCA(n_components=None)
	#将数据分解为较低维数空间
    
    PCA.fit_transform(X)       
		# X:numpy array格式的数据[n_samples,n_features]
		# 返回值:转换后指定维度的array

示例:

from sklearn.decomposition import PCA

def pca():
    """
    主成分分析进行特征降维
    :return: None
    """
    pca = PCA(n_components=0.9) # 选定方差低于0.9的删除

    data = pca.fit_transform([[2,8,4,5],[6,3,0,8],[5,4,9,1]])

    print(data)

    return None

if __name__ == "__main__":
   pca()

结果为

[[-3.13587302e-16  3.82970843e+00]
 [-5.74456265e+00 -1.91485422e+00]
 [ 5.74456265e+00 -1.91485422e+00]]

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

  • 数据:
    
    - products.csv             商品信息
    - order_products__prior.csv 订单与商品信息
    - orders.csv               用户的订单信息   
    - aisles.csv                商品所属具体物品类别
    

在这里插入图片描述

import pandas as pd
from sklearn.decomposition import PCA

# 读取四张表的数据
prior = pd.read_csv("../order_products__prior.csv")

products = pd.read_csv("../products.csv")

orders = pd.read_csv("../orders.csv")

aisles = pd.read_csv("../aisles.csv")

# 合并四张表到一张表 (用户-物品类别)
_mg = pd.merge(prior, products, on =['product_id', 'product_id'])
_mg = pd.merge(_mg, orders, on=['order_id', 'order_id'])
mt = pd.merge(_mg, aisles, on=['aisle_id', 'aisle_id'])

mt.head(10)

结果为

在这里插入图片描述

# 交叉表
cross = pd.crosstab(mt['user_id'], mt['aisle'])
cross.head(10)

在这里插入图片描述

特征选择与降维的比较?

  • 降维本质上是从一个维度空间映射到另一个维度空间,特征的多少别没有减少,当然在映射的过程中特征值也会相应的变化。
  • 特征选择就是单纯地从提取到的所有特征中选择部分特征作为训练集特征,特征在选择前和选择后不改变值,但是选择后的特征维数肯定比选择前小,毕竟只选择了其中的一部分特征。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值