数据降维,顾名思义它就是将数据的维度减少,这里维度就是往期文章所提特征如人肤色、头发长度、性别等。数据降维有两种方式:1.特征选择 2. 主成分分析
特征选择
特征选择从字面的理解就是从众多的特征选择特征。
特征选择深入单纯地从提取到的所有特征中选择部分特征作为训练集特征,特征在选择前和选择后可以改变值、也不改变值,但是选择后的特征维数肯定比选择前小,毕竟只选择了其中的一部分特征。
特征选择的原因
冗余:部分特征的相关度高,容易消耗计算性能
噪声:部分特征对预测结果有负影响
比方说我们要从身高,体重,肤色,头发长度特征中筛选出性别女的人,这个肤色就可以拿掉,对于筛选出性别并没有帮助。当然现实中这种维度的选择并不是像上面所说用肉眼看出来,而是从数据中判断分析出来的。
特征选择的主要方法:
1.Filter(过滤式):VarianceThreshold
2. Embedded(嵌入式):正则化、决策树
3. Wrapper(包裹式)
这篇文章主要介绍Filter(过滤式),Embedded后续文章会介绍,Wrapper现实很少使用暂时不介绍。
Filter(过滤式)VarianceThreshold语法
包:
sklearn.feature_selection.VarianceThreshold
方法:
VarianceThreshold(threshold = 0.0) 删除所有低方差特征 Variance.fit_transform(X,y) X:numpy array格式的数据[n_samples,n_features] 返回值:训练集差异低于threshold的特征将被删除 默认值是保留所有非零方差特征,即删除所有样本中 具有相同值的特征
案例:
from sklearn.feature_selection import VarianceThreshold def var(): var = VarianceThreshold(threshold=0.0) data = var.fit_transform([[0, 2, 0, 3], [0, 1, 4, 3], [0, 1, 1, 3]]) print(data)
PCA 主成分分析
本质:PCA是一种分析、简化数据集的技术
目的:是数据维数压缩,尽可能降低原数据的维数(复杂度),损失少量信息
作用:可以削减回归分析或者聚类分析中特征的数量。降维并减少维度里的特征值。
如果特征过多,成百上千的特征,将会出现一个情况特征之间通常是线性相关的。
特征1和特征50有什么区别,特征1乘2是不是就接近特征50。如果交给pca处理,将会将他们当成一个特征进行处理。下面进一步理解pca它是如何对数据进行精简的。
如上图,如何将这个二维的数据简化成一维?如果将数据全投到x轴,那么这上面点将会5个点会变成3个点。如果将数据全投到y轴,结果也是5个点也会变成3个点,但是如果让pca来处理这个问题,它会如何处理?
pca的处理的方式如上图,它会降维的同时尽可能减少的数据的损失。这就是pca会将高纬度的数据降成低纬度,并将数据精简。
计算公式
上面文章所提到的图2维为转1维,就如同公式计算出的Y的五个点。
语法
包:
sklearn. decomposition.PCA
方法:
PCA(n_components=None) 将数据分解为较低维数空间 PCA.fit_transform(X) X:numpy array格式的数据[n_samples,n_features] 返回值:转换后指定维度的array
n_components 可输入小数和整数。填写小数据如0.9则会减少百分之十的特征值的数据。一般填写0.9~0.95。填写整数如10,是减少到特征数量,一般不用这个方式。
案例
from sklearn.decomposition import PCA def pca(): pca = PCA(n_components=0.9) data = pca.fit_transform([[2,8,4,5],[6,3,0,8],[5,4,9,1]]) print(data)