单纯的调库,没有原理和数学推导。。。

数据降维

1、特征选择
2、主成分分析

特征选择

特征选择的原因:

冗余:部分特征的相关度高,容易消耗计算性能

噪声:部分特征对预测结果有负影响

特征选择是什么?

特征选择就是单纯地从提取到的所有特征中选择部分特征作为训练集特征,特征在选择前和选择后可以改变值、也不改变值,但是选择后的特征维数肯定比选择前小,毕竟我们只选择了其中的一部分特征。

主要方法(三大武器):

Filter(过滤式):VarianceThreshold
Embedded(嵌入式):正则化、决策树
Wrapper(包裹式)

API : sklearn.feature_selection.VarianceThreshold

我们遇到的数据是复杂多变的,有可能会存在很多个特征值,但是并不是每一个特征值都能很好的体现区分度,那么这样的特征值就不存在分析的价值了。

机器学习 sklearn绘制 标签与特征的分布 sklearn 特征选择_坐标轴

Features with a training-set variance lower than this threshold will be removed. The default is to keep all features with non-zero variance, i.e. remove the features that have the same value in all samples.

from sklearn.feature_selection import VarianceThreshold
import numpy as np

def var():
    #删除低方差的特征
    var = VarianceThreshold(threshold=1.0) # 初始化VarianceThreshold,指定阀值方差
    data = var.fit_transform([[0, 2, 0, 3],
    [0, 1, 4, 3],
    [0, 1, 1, 3]])
    print(data)

if __name__ == '__main__':
    var()

机器学习 sklearn绘制 标签与特征的分布 sklearn 特征选择_主成分分析_02

我们发现第一列第四列全是0,第二列方差小于1,那么这些列的区分度就会很微弱,也就不具备分析的价值了。

主成分分析

PCA(Principal Component Analysis),即主成分分析方法,是一种使用最广泛的数据降维算法。PCA的主要思想是将n维特征映射到k维上,这k维是全新的正交特征也被称为主成分,是在原有n维特征的基础上重新构造出来的k维特征。PCA的工作就是从原始的空间中顺序地找一组相互正交的坐标轴,新的坐标轴的选择与数据本身是密切相关的。其中,第一个新坐标轴选择是原始数据中方差最大的方向,第二个新坐标轴选取是与第一个坐标轴正交的平面中使得方差最大的,第三个轴是与第1,2个轴正交的平面中方差最大的。依次类推,可以得到n个这样的坐标轴。通过这种方式获得的新的坐标轴,我们发现,大部分方差都包含在前面k个坐标轴中,后面的坐标轴所含的方差几乎为0。于是,我们可以忽略余下的坐标轴,只保留前面k个含有绝大部分方差的坐标轴。事实上,这相当于只保留包含绝大部分方差的维度特征,而忽略包含方差几乎为0的特征维度,实现对数据特征的降维处理。来源

当特征数量达到上百的时候,考虑数据的简化。简化后数据会改变,特征数量也会减少。

本质:PCA是一种分析、简化数据集的技术

目的:是数据维数压缩,尽可能降低原数据的维数(复杂度),损失少量信息。

作用:可以削减回归分析或者聚类分析中特征的数量

机器学习 sklearn绘制 标签与特征的分布 sklearn 特征选择_方差_03

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)

if __name__ == '__main__':
    pca()

机器学习 sklearn绘制 标签与特征的分布 sklearn 特征选择_方差_04

降维案例

机器学习 sklearn绘制 标签与特征的分布 sklearn 特征选择_坐标轴_05

流程:

1、按相同的特征合并各张表到一张表当中

使用pandas.merge()
顺序:
prior: product_id, order_id
products: product_id, aisle_id
orders: order_id, user_id
aisles: aisle_id, aisle

2、进行主成分分析

机器学习 sklearn绘制 标签与特征的分布 sklearn 特征选择_坐标轴_06

机器学习 sklearn绘制 标签与特征的分布 sklearn 特征选择_主成分分析_07

机器学习 sklearn绘制 标签与特征的分布 sklearn 特征选择_坐标轴_08