【Python机器学习】将PCA用于cancer数据集并可视化

news2024/11/17 16:31:20

PCA最常见的应用之一就是将高维数据集可视化。一般对于有两个以上特征的数据,很难绘制散点图,。对于Iris(鸢尾花)数据集,我们可以创建散点矩阵图,通过展示特征所有可能的两两组合来展示数据的局部图像。

不过类似cancer数据集,包含30个特征,这就导致需要绘制30*14=420张散点图。

不过还可以用一种简单的可视化方法——对每个特征分别计算两个类别的直方图:

import mglearn.plots
import numpy as np
from sklearn.datasets import make_blobs,load_breast_cancer
import matplotlib.pyplot as plt


cancer=load_breast_cancer()
fig,axes=plt.subplots(15,2,figsize=(10,20))
malignant=cancer.data[cancer.target==0]
benign=cancer.data[cancer.target==1]

ax=axes.ravel()

for i in range(30):
    _,bins=np.histogram(cancer.data[:,i],bins=50)
    ax[i].hist(malignant[:,i],bins=bins,color=mglearn.cm3(0),alpha=0.5)
    ax[i].hist(benign[:,i],bins=bins,color=mglearn.cm3(2),alpha=0.5)
    ax[i].set_title(cancer.feature_names[i])
    ax[i].set_yticks(())

ax[0].set_xlabel('Feature magnitude')
ax[0].set_ylabel('Frequency')
ax[0].legend(['malignant','benign'],loc='best')
fig.tight_layout()
plt.show()

这里为每个特征创建了一个直方图,计算具有某一特征的数据点在特点范围内(bin)的出现频率。

每张图都包含两个直方图,一个是良性类别的所有点(蓝色),一个是恶性类别的所有点(红色)。这样可以了解每个特征在两个类别中的分布情况,也可以猜测哪个特征能够很好的区分良性样本和恶性样本。

但是,这种图无法展示变量之间的相互作用以及这种相互作用与类别之间的关系。利用PCA,我们可以获取到主要的作用,并得到稍微完整的图像。我们可以找到前两个主成分,并在这个新的二维空间中用散点图将数据可视化:


cancer=load_breast_cancer()
scaler=StandardScaler()
scaler.fit(cancer.data)
X_scaler=scaler.transform(cancer.data)

将PCA对象实例化,调用fit方法找到主成分,然后调用transform来旋转并降维。默认情况下,PCA仅旋转并移动数据,但保留所有的主成分。为了降低数据的维度,我们需要在创建PCA对象时指定想要保留的主成分个数。


pca=PCA(n_components=2)
pca.fit(X_scaler)

X_pca=pca.transform(X_scaler)
print('Original shape:{}'.format(str(X_scaler.shape)))
print('Reduced shape:{}'.format(str(X_pca.shape)))

现在对前两个主成分作图:


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')
plt.ylabel('second')
plt.show()

需要注意的是,PCA是一种无监督方法,在寻找旋转方向时没有用到任何类别信息。它只是观察数据中的相关性。

对于这里的散点图,我们绘制了第一主成分和第二主成分的关系,然后利用类别信息对数据点进行着色。在这个二维空间中的两个类别被很好的分离。这让我们相信,即使是线性分类器也可以在区分这个两个类别时表现的相当不错。

PCA的一个缺点是:通常不容易对图中的两个轴进行解释。主成分对应于原始数据中的方向,所以它们是原始特征的拟合。但这些组合往往非常复杂,这一点我们很快就会看到。

在拟合过程中,主成分被保存在PCA对象的components_属性中:


print('PCA components shape:{}'.format(pca.components_.shape))

components_中的每一行对应一个主成分,它们按重要性排序。列对应于PCA的原始特征属性,components_的内容:

print('PCA components:{}'.format(pca.components_))

还可以用热图将系数可视化,这可能更容易理解:


plt.matshow(pca.components_,cmap='viridis')
plt.yticks([0,1],['first','second'])
plt.colorbar()
plt.xticks(range(len(cancer.feature_names)),
           cancer.feature_names,rotation=60,ha='left')

plt.xlabel('feature')
plt.ylabel('Principal components')
plt.show()

可以看到,在第一个主成分中,所有特征的符号相同(均为正)。这意味着在所有特征之间存在普遍的相关性,如果一个测量值很大的话,其他的测量值可能也较大。第二个主成分的符号有正有负,而且两个主成分都包含所有30个特征。这种所有特征的混合使得解释上图中的坐标轴非常困难。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1799854.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[论文笔记]AIOS: LLM Agent Operating System

引言 这是一篇有意思的论文AIOS: LLM Agent Operating System,把LLM智能体(代理)看成是操作系统。 基于大语言模型(LLMs)的智能代理的集成和部署过程中存在着许多挑战,其中问题包括代理请求在LLM上的次优调度和资源分配,代理和LLM之间在交互…

【问题解决】adb remount 失败或刷机无法连接设备(KaiOS)

问题描述 1、设备无法adb remount成功, 2、通过fastboot无法识别设备,一直卡住 3、已经识别到9008端口,但是设备与刷机工具connect fail,甚至软件crash 解决方案 1、安装高通驱动工具:QDLoder HS-USB Driver QDLoade…

暴雨推出基于英特尔® 至强® 6 能效核处理服务器

随着人工智能技术的快速发展,大模型的应用越来越广泛。据预测,到2024年年底,我国将有5%-8%的企业大模型参数从千亿级跃升至万亿级,算力需求增速将达到320%,这进一步推动了数据中心的持续变革。 超凡性能,绿…

网络实用技术答案

( C )不属于计算机网络四要素。A. 计算机系统 B. 传输介质C. 用户 D. 网络协议计算机网络中广域网和局域网的分类是以( D )来划分的。A. 信息交换方式 B.传输控制方法C. 网络使用习惯 D.网络覆盖范围计算机…

苹果将推出“Apple Intelligence”AI系统,专注于隐私和广泛应用|TodayAI

据彭博社报道,苹果公司将在下周的 WWDC 2024 开发者大会上揭晓其全新的 AI 系统——“Apple Intelligence”,该系统将适用于 iPhone、iPad 和 Mac 设备。这一新系统将结合苹果自身技术和 OpenAI 的工具,为用户提供一系列新的 AI 功能,同时重点关注隐私保护和广泛应用。 与…

算法导论实战(三)(算法导论习题第二十四章)

🌈 个人主页:十二月的猫-CSDN博客 🔥 系列专栏: 🏀算法启示录 💪🏻 十二月的寒冬阻挡不了春天的脚步,十二点的黑夜遮蔽不住黎明的曙光 目录 前言 第二十四章 24.1-3 24.1-4 2…

【C语言】05.数组

一、数组的概念 本文来介绍数组,首先我们需要了解数组是什么? 数组是⼀组相同类型元素的集合。 • 数组中存放的是1个或者多个数据,但是数组元素个数不能为0。 • 数组中存放的多个数据,类型是相同的。 数组分为⼀维数组和多维数组…

使用迭代最近点 (ICP) 算法在 Open3D 中对齐点云

一、Open3D 简介及其功能 Open3D 是一个现代库,它提供了用于处理 3D 数据的各种工具。在其功能中,它提供了高效的数据结构和算法来处理点云、网格等,使其成为在计算机视觉、机器人和图形领域工作的研究人员和从业人员的不错选择。Open3D 的特…

网络简史-基于图论的网络

先看一幅图: 如图,我们对类似 crossbar,banyan tree,b-tree,10-tree,256-tree,甚至 dcn fat-tree 等 “规则拓扑” 网络相当熟悉。规则拓扑网络中,地址信息被编码到拓扑本身&#…

继续引爆!5天连出2个里程碑成果,离子阱量子计算机嗨翻天!

5月30日,清华大学的一项成果被Nature审稿人称为“量子模拟领域的巨大进步”!“值得关注的里程碑”!该成果就是中国科学院院士、清华大学交叉信息研究院教授段路明带领研究组在量子模拟计算领域取得的重要突破。段路明研究组首次实现512离子二…

Java使用XWPFTemplate将word填充数据,并转pdf

poi-tl poi-tl&#xff08;poi template language&#xff09;是基于Apache POI的Word模板引擎。纯Java组件&#xff0c;跨平台&#xff0c;代码短小精悍&#xff0c;通过插件机制使其具有高度扩展性。 主要处理区域有这么几个模块: 依赖 <dependency><groupId>…

【UE5教程】使用蓝图显示鼠标

首先&#xff0c;在您的项目中创建一个新的蓝图类&#xff0c;继承自PlayerController。在蓝图编辑器中&#xff0c;找到Event BeginPlay节点&#xff0c;并从它引出一条线。添加Set Show Mouse Cursor节点&#xff0c;勾选Visible&#xff0c;以确保鼠标在游戏开始时可见。 鼠…

flask_sqlalchemy时间缓存导致datetime.now()时间不变问题

问题是这样的&#xff0c;项目在本地没什么问题&#xff0c;但是部署到服务器过一阵子发现&#xff0c;这个时间会在某一刻定死不变。 重启uwsgi后&#xff0c;发现第一条数据更新到了目前最新时间&#xff0c;过了一会儿再次发送也变了时间&#xff0c;但是再过几分钟再发就会…

一句话说清HDMI ARC eARC功能和区别

HDMI&#xff1a; 高清多媒体接口&#xff0c;主要用于传输高清音视频信号&#xff0c;High Definition Multimedia Interface。 ARC: 音频回传通道&#xff0c;Audio Return Channel eARC: 增强型音频回传通道&#xff0c;第一个E是增强的意思&#xff0c;Enhanced Audio…

超过20W个高质量组件的开源PCB库

项目介绍 Celestial Altium Library是由Altium行业专家Mark Harris创建的一个庞大的免费开源数据库库&#xff0c;专为Altium Designer而设计&#xff0c;库中包含超过20万个优质组件 . 特点 高质量数据&#xff1a;Celestial Altium Library注重数据的质量&#xff0c;用户可…

聊聊二叉堆、红黑树、时间轮在定时任务中的应用

定时任务作为常用的一种调度方式&#xff0c;在各大系统得到了广泛的应用。 笔者也曾写过两篇关于定时任务框架介绍的文章&#xff1a; 《介绍一下,spring cloud下的另一种定时任务解决方案》《四叉堆在GO中的应用-定时任务timer》 之前都是以如何使用为主&#xff0c;这次从…

Dokcer 基础使用 (4) 网络管理

文章目录 Docker 网络管理需求Docker 网络架构认识Docker 常见网络类型1. bridge 网络2. host 网络3. container 网络4. none 网络5. overlay 网络 Docker 网路基础指令Docker 网络管理实操 其他相关链接 Docker 基础使用(0&#xff09;基础认识 Docker 基础使用(1&#xff09;…

Android无障碍服务

Hi I’m Shendi Android无障碍服务 最近想制作一个记录点击操作并重复播放的工具&#xff0c;用以解放双手&#xff0c;因现在的Android高版本基本上难以Root&#xff0c;所以选择了使用无障碍来实现&#xff0c;在这里记录下来。 Android无障碍 可参考文档&#xff1a;https:…

【MySQL】sql语句之库操作

序言 在上篇文章学习当中&#xff0c;我们认识了数据库的相关概念&#xff0c;以及MySQL的框架和基本使用等内容&#xff0c;总之对数据库有了一个大致的认识&#xff0c;那么本篇文章将开始关于sql语句的学习&#xff0c;本文主要是关于库的属性和操作的内容&#xff0c;简单可…

DOS 操作系统

DOS 介绍 DOS&#xff1a;disk operating system&#xff0c;磁盘操作系统。 中国DOS联盟下载 MS-DOS 7.10完整安装版&#xff08;含图形安装程序&#xff09; DOS 环境下的操作 输入部分内容后按下 Tab 可以快速自动补全。 按住 Ctrl 键可以用鼠标滚轮改变字号大小。 DO…