【python】PCA降维及其在分类问题中的应用

1. 机器学习的类别

机器学习分为四大块,如下图所示,分别是: classification (分类),regression (回归),  clustering (聚类), dimensionality reduction (降维)。

è¿éåå¾çæè¿°

区分方式:给定一个样本特征 , 我们希望预测其对应的属性值 , 如果  是离散的, 那么这就是一个分类问题,反之,如果  是连续的实数, 这就是一个回归问题。给定一组样本特征 , 我们没有对应的属性值 , 而是想发掘这组样本在多维空间的分布, 比如分析哪些样本靠的更近,哪些样本之间离得很远, 这就是属于聚类问题。如果我们想用维数更低的子空间来表示原来高维的特征空间, 那么这就是降维问题

另外,PCA和线性回归的区别。线性回归是找x与y的关系,然后用于预测y;PCA是找一个投影面,最小化data到这个投影面的投影误差。PCA是保证投射的误差最小,而线性回归是保证沿方向的误差最小,如下图所示。

2. 利用PCA可以用于加速监督式学习

具体方法如下:

(1) 对于带标签的数据,去掉标签后进行PCA数据降维;

(2)使用降维后的数据进行模型训练;

(3) 对于新的数据点,先PCA降维得到降维后数据,带入模型获得预测值。

注:应仅用训练集数据进行PCA降维获取映射,然后将该映射(PCA选择的主元矩阵)应用到验证集和测试集。不要用PCA阻止过拟合,用regularization。在使用PCA之前,先用原始数据进行模型训练,如果不行,再考虑使用PCA;而不要上来直接使用PCA。

另外,可以依次改变k值的大小并观察KNN分类准确度的变化,选取合适的K值。例如,我们可以先利用PCA降维,再进行数据分类,k值的选取与分类准确度的关系如下图所示。

由上图可知,发现在K=8时,在测试集上分类准确度最高,为93.56%。k值选择过小,得到的近邻数过少,会降低分类精度,同时也会放大噪声数据的干扰;而如果k值选择过大,并且待分类样本属于训练集中包含数据数较少的类,那么在选择k个近邻的时候,实际上并不相似的数据亦被包含进来,造成噪声增加而导致分类效果的降低。如何选取恰当的K值也成为KNN的研究热点。k值通常是采用交叉检验来确定(以k=1为基准)。经验规则是k一般低于训练样本数的平方根。

3. 使用scikit-learn库中的PCA实现降维

3.1 导入需要的包

from sklearn.decomposition import PCA
from sklearn.preprocessing import StandardScaler
import numpy as np

3.2 归一化数据

scaler = StandardScaler()
scaler.fit(X)
x_train = scaler.transform(X)

3.3 使用PCA模型拟合数据,并降维

model = PCA(n_components=K).fit(x_train)   # 拟合数据,n_components定义要降的维度
Z = model.transform(x_train)    # transform就会执行降维操作

3.4 数据恢复 

Ureduce = model.components_     # 得到降维用的Ureduce
x_rec = np.dot(Z,Ureduce)       # 数据恢复

3.5 利用U矩阵将测试数据降维

test_data = test_data * np.asmatrix(Ureduce).I                # 利用U矩阵对测试集数据进行PCA降维

 更多详情,请移步:分类、回归、聚类、降维的区别 和 paviaU光谱数据集降维与分类 和 机器学习(七):主成分分析PCA降维_Python

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值