15-删除低方差特征与相关系数

本文介绍了特征选择的重要性,特别是过滤式方法中的低方差特征过滤和皮尔森相关系数。讲解了如何在sklearn库中实现低方差特征的选择,并通过代码演示了具体步骤。此外,还探讨了皮尔森相关系数的计算公式、特点以及如何在Python中计算数据的相关性。

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

什么是特征选择?

定义

在这里插入图片描述

举例说明特征选择的定义

在这里插入图片描述

在这里插入图片描述

特征选择的方法

在这里插入图片描述

相关系数——特征与特征之间的相关程度

在sklearn中如何实现特征选择

在这里插入图片描述

过滤式

低方差特征过滤

什么是低方差特征过滤

在这里插入图片描述

如何在sklearn中实现低方差特征过滤

在这里插入图片描述

代码演示

原始数据:

在这里插入图片描述

代码:

# -*- coding: utf-8 -*-

"""
@Time    : 2021/3/8 19:48
@Author  : yuhui
@Email   : [email protected]
@FileName: 15_删除低方差特征与相关系数.py
@Software: PyCharm
"""

import pandas as pd
from sklearn.feature_selection import VarianceThreshold

def low_variance_feature_filtering():
	"""低方差特征过滤"""
	# 获取数据
	data=pd.read_csv("../data/factor_returns.csv")
	data=data.iloc[:,1:-2]
	# print(data)
	# 实例化一个转换器类
	transfer=VarianceThreshold(threshold=10)

	# 调用方法
	data_new=transfer.fit_transform(data)

	# 查看结果
	print(data_new.shape)

if __name__ == '__main__':
    # low_variance_feature_filtering()

运行结果:

D:\Anaconda3\Installation\envs\math\python.exe D:/Machine_Learning/Machine_Learning_1/code/15_删除低方差特征与相关系数.py
(2318, 7)

Process finished with exit code 0

补充:

  • 我的文件结构

在这里插入图片描述

  • 原始文件中的内容
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
5,000100.XSHE,10.796,1.5219999999999998,17206724233.0,2.245,7.7394,66034033386.1,0.0974,43883757748.0,43092263405.0,2012-01-31,0.13795588072275808
6,000402.XSHE,8.1032,1.0078,
<think>好的,用户想了解如何在特征工程中使用皮尔逊相关系数法进行特征选择。首先,我需要回忆一下皮尔逊相关系数的基本概念和适用条件。根据引用[4],皮尔逊相关系数假设变量联合分布近似正态分布,适用于线性关系。如果数据不符合这些条件,可能需要改用其他方法,比如斯皮尔曼相关系数,这点在引用[3]也提到过。 接下来,用户需要具体的步骤和示例代码。我应该分步骤说明,从数据准备、计算相关系数、筛选特征到可视化,这样结构更清晰。同时,需要确保使用正确的LaTeX格式,比如数学公式用$...$,例如皮尔逊公式写成$r_{xy}$。还要注意独立公式用$$...$$,比如相关系数公式单独成段。 然后,示例代码部分要展示如何用Python实现,可能需要用到pandas和scipy.stats中的pearsonr函数。同时,要解释每步的作用,比如计算每列目标变量的相关系数,并筛选出绝对值高的特征。引用[2]提到特征选择方法的应用,可以在这里结合说明。 注意事项部分需要强调皮尔逊的假设条件,如线性、正态分布,以及可能忽略非线性关系的问题,这对应引用[4]的内容。此外,提到其他方法如斯皮尔曼和互信息,帮助用户了解替代方案,引用[3]中的秩次关系可以在这里应用。 最后,生成相关问题时要围绕用户可能的后续疑问,比如优缺点、处理非线性、替代方法等,确保覆盖用户可能感兴趣的方向。同时,检查引用标记是否正确,确保每个引用来源内容匹配,比如引用[1]和[4]都涉及皮尔逊的应用场景和假设条件。 需要确保回答结构清晰,步骤明确,代码可运行,注意事项全面,并且引用正确。可能还需要检查LaTeX语法是否正确,比如公式中的括号是否匹配,积分符号是否正确使用,避免格式错误。</think>### 特征工程中使用皮尔逊相关系数法的步骤示例 #### 1. **核心原理** 皮尔逊相关系数(Pearson Correlation Coefficient)用于衡量两个连续变量之间的线性相关程度,取值范围为$[-1,1]$。其定义为: $$r_{xy} = \frac{\text{cov}(x,y)}{\sigma_x \sigma_y}$$ 其中,$\text{cov}(x,y)$是协方差,$\sigma_x$和$\sigma_y$是标准差。值越接近$1$或$-1$表示线性相关性越强,$0$表示无线性相关[^4]。 #### 2. **应用场景** - 特征目标变量之间的线性相关性筛选 - 冗余特征识别(特征间高度相关时保留其一) - 适用于变量服从正态分布或接近线性关系的数据[^3] --- #### 3. **示例代码** ```python import pandas as pd from scipy.stats import pearsonr # 生成示例数据(假设df包含特征X1,X2,X3和目标变量y) data = { 'X1': [1, 2, 3, 4, 5], 'X2': [5, 4, 3, 2, 1], 'X3': [2, 3, 2.5, 4, 3.5], 'y': [3, 5, 4, 6, 5] } df = pd.DataFrame(data) # 计算各特征目标变量的皮尔逊相关系数 correlations = {} for col in df.columns[:-1]: # 假设最后一列是目标变量 corr, _ = pearsonr(df[col], df['y']) correlations[col] = corr # 筛选相关性绝对值大于0.5的特征 selected_features = [k for k, v in correlations.items() if abs(v) > 0.5] print("Selected features:", selected_features) ``` #### 4. **可视化辅助** 通过热力图可直观展示特征间相关性: ```python import seaborn as sns corr_matrix = df.corr() sns.heatmap(corr_matrix, annot=True) ``` --- #### 5. **注意事项** 1. **假设条件**:变量需满足联合正态分布假设,且关系为线性 2. **非线性关系**:可能低估非线性相关特征的重要性(此时可用互信息法) 3. **冗余特征处理**:若两个特征相关系数接近$1$或$-1$,需删除其中一个 4. **分类变量**:需先编码为数值型变量(如独热编码),或改用其他方法(如卡方检验) --- #### 6. **扩展方法** - **显著性检验**:结合p值判断相关性是否统计显著 - **分箱处理**:对非正态分布数据可先分箱再计算相关系数 - **组合使用**:方差阈值法、递归特征消除法结合使用[^2] ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值