机器学习之PCA算法

一、定义

        PCA,即主成分分析法,是一种旋转数据集的方法,所谓主成分就是最大方差的主要方向,一般来说,主成分的个数与原始特征相同。

二、应用

2.1降维从而达到数据可视化的目的:

       很多数据集的维度很高,而我们如果想得到可视化的效果,必须降到三维及以下,所以,这就需要用到PCA算法。下面以乳腺癌数据集为例,进行分析:

好,延续我们以前的习惯,把想说的话放到代码的注释里,话不多说,直接上代码:

from sklearn.decomposition import PCA


#首先对数据进行缩放,使得每个特征的方差等于1,这里我们采用StandardScaler缩放
#导入数据集
from sklearn.datasets import load_breast_cancer
#导入StandardScaler缩放函数需要的依赖
from sklearn.preprocessing import StandardScaler

cancer=load_breast_cancer()
scaler=StandardScaler()
scaler.fit(cancer.data)
X_scaled=scaler.transform(cancer.data)
#上面两句话可以合并为X_scaled=scaler.fit_transform(cancer.data)
#缩放完毕


#保留数据的前两个主成分,实例化pca对象
pca=PCA(n_components=2)
#对乳腺癌数据拟合PCA模型
pca.fit(X_scaled)
#将数据变换到前两个主成分的方向上
x_pca=pca.transform(X_scaled)
#让我们看一下前后发生的变化
print("Original shape:{}".format(str(X_scaled.shape)))
print("Reduced shape:{}".format(str(x_pca.shape)))

输出如下:

Original shape:(569, 30)
Reduced shape:(569, 2)

降维成功,本来30个特征,新的数据集只有两个特征,设置特征数用参数n_components=2,下面让我们看看绘图结果。

#对第一第二个主成分作图,按照类别着色
import matplotlib.pyplot as plt
import mglearn.datasets
plt.figure(figsize=(8,8))
mglearn.discrete_scatter(x_pca[:,0],x_pca[:,1],cancer.target)
plt.legend(cancer.target_names,loc="best")
plt.gca().set_aspect("equal")
plt.xlabel("First principal component")
plt.ylabel("Second principal component")
plt.show()

 

从图中我们可以看到,即使是线性分类器(在这个空间中学习一条直线),也可以在区分这两个类别时表现得相当不错。

 

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CtrlZ1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值