当前位置:   article > 正文

ML机器学习-PAC降维-应对【高维数据灾难】【案例】

pac降维

为什么要降维?

原因

高维机器学习具有大量的特征(变量),这些对机器学习计算有一定的障碍,但是其中的一些特征(变量)可能存在一定的相关性,在保证不损失太多的信息条件下,将特征处理为一组新的变量,达到降低为原始数据的维度。

主成分分析PAC

主成分分析(PAC)在处理降维是应用最为广泛。

思想

大量相关变量组成的数据集的维数,同时尽可能保持数据集的方差

找到一组新的变量,原来的变量只是它们的线性组合
新的变量称为主成分(Principal Component
在这里插入图片描述
理解原理:传送门
下面使用鸢尾花的内置数据集来展开PCA示例

import pandas as pd
url = 'https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data'
df = pd.read_csv(url, names=['sepal length','sepal width','petal length','petal width','target'])
print(df.head())
  • 1
  • 2
  • 3
  • 4

数据大概长这样

这里是引用

第一步:标准化

这里用到了sklearn模块的StandardScaler方法

from sklearn.preprocessing import StandardScaler
variables = ['sepal length','sepal width','petal length','petal width']
x = df.loc[:, variables].values
y = df.loc[:,['target']].values
x = StandardScaler().fit_transform(x) 
x = pd.DataFrame(x)
print(x)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

标准化后长这样

这里是引用

第二步:PCA

from sklearn.decomposition import PCA
pca = PCA()
x_pca = pca.fit_transform(x)
x_pca = pd.DataFrame(x_pca)
x_pca.head()
  • 1
  • 2
  • 3
  • 4
  • 5

结果成了这样

这里是引用
原始数据集中有四个特征。所以PCA会提供相同数量的主成分
我们利用pca.explained_variance_ratio_来获取,每一个主成分提取的信息占比

第三步:计算主成分(方差贡献)

explained_variance = pca.explained_variance_ratio_
print(explained_variance)
# 返回一个向量
[0.72770452 0.23030523 0.03683832 0.00515193]
  • 1
  • 2
  • 3
  • 4

解释:它显示第一个主成分占72.22%的方差,第二,第三和第四个占23.9%,3.68%和0.51%的方差。我们可以说第一和第二主成分捕获了72.22 + 23.9 = 96.21%的信息。我们经常希望只保留重要的特征并删除无关紧要的特征。经验法则是,保留能捕获显著方差的主成分,忽略较小的方差。

第四步:合并成新数据

x_pca[‘target’]=y
x_pca.columns = [‘PC1’,’PC2',’PC3',’PC4',’target’]
x_pca.head()
  • 1
  • 2
  • 3

展示

在这里插入图片描述

第五步:结果可视化

import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(1,1,1) 
ax.set_xlabel(‘Principal Component 1) 
ax.set_ylabel(‘Principal Component 2) 
ax.set_title(2 component PCA’) 
targets = [‘Iris-setosa’, ‘Iris-versicolor’, ‘Iris-virginica’]
colors = [‘r’, ‘g’, ‘b’]
for target, color in zip(targets,colors):
 indicesToKeep = x_pca[‘target’] == target
 ax.scatter(x_pca.loc[indicesToKeep, ‘PC1’]
 , x_pca.loc[indicesToKeep, ‘PC2’]
 , c = color
 , s = 50)
ax.legend(targets)
ax.grid()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

在这里插入图片描述
惊奇的发现,主成分12,在空间上是可以分的。

Kernel PAC

总的来说,PAC是基于线性变换,而KPAC,是基于非线性变换的结果,用于处理线性不可分的数据集。

KPCA的大致思路是:对于输入空间(Input space)中的矩阵 [公式] ,我们先用一个非线性映射把 [公式] 中的所有样本映射到一个高维甚至是无穷维的空间(称为特征空间,Feature space),(使其线性可分),然后在这个高维空间进行PCA降维。
在这里插入图片描述
原理解析参考
传送门

线性判别分析-LDA

提示:这里统计学习计划的总量
例如:
1、 技术笔记 2 遍
2、CSDN 技术博客 3 篇
3、 学习的 vlog 视频 1 个

奇异值分解-SVD

t-SNE

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号