目录
降维的方式:特征选择和主成分分析
数据中包含冗余或⽆关变量(或称特征、属性、指标等),旨在从原有特征中找出主要特征。
特征⽅差⼩:某个特征⼤多样本的值⽐较相近
特征⽅差⼤:某个特征很多样本的值都有差别
- import pandas as pd
- from sklearn.feature_selection import VarianceThreshold
- import numpy as np
-
- data=pd.read_csv("D:\\迅雷下载\\demo\\machineLearnCode\\dimensionalityReduceTest\\factor_returns.csv")
- # print(data[:,2]) 报错,列表结构不可以这样写
- print(data.shape)
-
- transfer=VarianceThreshold(threshold=10) #训练集差异低于threshold的特征将被删除
- transfer_data=transfer.fit_transform(data.iloc[:,1:10])
- np.set_printoptions(threshold=np.inf) #打印数据全部都展现出来
- print(transfer_data)
反映变量之间相关关系密切程度的统计指标
相关系数的值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为⾼度线性相关
- from scipy.stats import pearsonr
-
- x1 = [12.5, 15.3, 23.2, 26.4, 33.5, 34.4, 39.4, 45.2, 55.4, 60.9]
- x2 = [21.2, 23.9, 32.9, 34.1, 42.5, 43.2, 49.0, 52.8, 59.4, 63.5]
- print(pearsonr(x1,x2))
反映变量之间相关关系密切程度的统计指标
其中n为等级个数,d为⼆列成对变量的等级差数
1.斯⽪尔曼相关系数表明 X (⾃变量) 和 Y (因变量)的相关⽅向。 如果当X增加时, Y 趋向于增加, 斯⽪尔曼相关系数 则为正
2. 与之前的⽪尔逊相关系数⼤⼩性质⼀样,取值 [-1, 1]之间
3.斯⽪尔曼相关系数⽐⽪尔逊相关系数应⽤更加⼴泛
- from scipy.stats import spearmanr
-
- x1 = [12.5, 15.3, 23.2, 26.4, 33.5, 34.4, 39.4, 45.2, 55.4, 60.9]
- x2 = [21.2, 23.9, 32.9, 34.1, 42.5, 43.2, 49.0, 52.8, 59.4, 63.5]
- print(spearmanr(x1,x2))
⾼维数据转化为低维数据的过程,在此过程中可能会舍弃原有数据、创造新的变量
作⽤:是数据维数压缩,尽可能降低原数据的维数(复杂度),损失少量信息。
应⽤:回归分析或者聚类分析当中
- from sklearn.decomposition import PCA
-
- data = [[2,8,4,5], [6,3,0,8], [5,4,9,1]]
- # 1、实例化PCA, ⼩数——保留多少信息
- transfer = PCA(n_components=0.9)
- # 2、调⽤fit_transform
- data1 = transfer.fit_transform(data)
- print(data1)
-
- # 1、实例化PCA, 整数——指定降维到的维数
- transfer2 = PCA(n_components=3)
- # 2、调⽤fit_transform
- data2 = transfer2.fit_transform(data)
- print("降维到3维的结果:\n", data2)