一、模块

sklearn. feature_selection

二、过滤式

1、低方差特征过滤

删除低方差的一些特征,再结合方差的大小来考虑这个方式的角度

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

1.1、API

  • sklearn .feature_ selection .VarianceThreshold(threshold=0.0)

    • 删除所有低方差特征

    • Variance.fit_transform(X)

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

2、相关系数

2.1、皮尔逊相关系数

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

公式:

示例:

结果为: 0.9942

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

2.2、取值范围

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

2.3、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():
		    #过滤低方差特征
		    #1、获取数据
		    data = pd.read_csv("factor_returns.csv")
		    
		    data = data.iloc[:,1:-2]
		    print("data:\n",data)
		    #2、实例化一个转换器
		    transfer = VarianceThreshold()
		    #3、调用fit_transform
		    data_new = transfer.fit_transform(data)
		    print("data_new:\n",data_new)
		    #计算某两个变量之间的相关系数
		    r1 = pearsonr(data["pe_ratio"],data["pb_ratio"])
		    r2 = pearsonr(data["revenue"],data["total_expense"])
		    print("相关系数:\n",r2)
		    return None

四、运行结果

data:
       pe_ratio  pb_ratio  ...       revenue  total_expense
0       5.9572    1.1818  ...  2.070140e+10   1.088254e+10
1       7.0289    1.5880  ...  2.930837e+10   2.378348e+10
2    -262.7461    7.0003  ...  1.167983e+07   1.203008e+07
3      16.4760    3.7146  ...  9.189387e+09   7.935543e+09
4      12.5878    2.5616  ...  8.951453e+09   7.091398e+09
...        ...       ...  ...           ...            ...
2313   25.0848    4.2323  ...  1.148170e+10   1.041419e+10
2314   59.4849    1.6392  ...  1.731713e+09   1.089783e+09
2315   39.5523    4.0052  ...  1.789082e+10   1.749295e+10
2316   52.5408    2.4646  ...  6.465392e+09   6.009007e+09
2317   14.2203    1.4103  ...  4.509872e+10   4.132842e+10

[2318 rows x 9 columns]
data_new:
 [[ 5.95720000e+00  1.18180000e+00  8.52525509e+10 ...  2.01000000e+00
   2.07014010e+10  1.08825400e+10]
 [ 7.02890000e+00  1.58800000e+00  8.41133582e+10 ...  3.26000000e-01
   2.93083692e+10  2.37834769e+10]
 [-2.62746100e+02  7.00030000e+00  5.17045520e+08 ... -6.00000000e-03
   1.16798290e+07  1.20300800e+07]
 ...
 [ 3.95523000e+01  4.00520000e+00  1.70243430e+10 ...  2.20000000e-01
   1.78908166e+10  1.74929478e+10]
 [ 5.25408000e+01  2.46460000e+00  3.28790988e+10 ...  1.21000000e-01
   6.46539204e+09  6.00900728e+09]
 [ 1.42203000e+01  1.41030000e+00  5.91108572e+10 ...  2.47000000e-01
   4.50987171e+10  4.13284212e+10]]
相关系数:
 (0.9958450413136111, 0.0)
Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐