2023-06-27 21:30:41, 质谱创新组学 上海欧易生物医学科技有限公司
PCA(Principal Component Analysis,主成分分析)是一种常用的降维技术,用于从高维数据中提取最重要的特征。它通过线性变换将原始数据映射到一个新的坐标系中,使得新的坐标系下的各个维度之间不相关,从而实现降维。
设想一下,假如我有几个学生的英语和数学成绩,想要描述学生分数的整体情况,并将他们分入不同班级。那我也许只需要分成英语好数学差,数学差英语好以及都好都差这四个象限就行了。但是,如果我有许多学生许多门科目的成绩呢?那么情况就非常复杂了,想要用一张图描述这么多维度对三维生物来说就更不可能了。于是我就会想,要是能像只有两门那样简单就好了,这时候就要用到降维了。通过主成分分析,可以将原始数据的维度减少到k维,同时保留了最重要的特征信息。降维后的数据在一定程度上简化了计算和可视化,并且可以去除原始数据中的噪声和冗余信息。主成分分析在数据预处理、特征提取和数据可视化等领域都有广泛的应用。
简单来说:
1. 将坐标轴中心移到数据的中心,然后旋转坐标轴,使得数据在C1轴上的方差最大,即全部n个数据个体在该方向上的投影最为分散。意味着更多的信息被保留下来。C1成为第一主成分。
2. 找一个C2第二主成分,使得C2与C1的协方差(相关系数)为0,以免与C1信息重叠,并且使数据在该方向的方差尽量最大。
以此类推,找到第三主成分,第四主成分……第p个主成分。p个随机变量可以有p个主成分。这些主成分是原始数据的线性组合,可以用来表示原始数据中的信息。
大家听懂了吗?没听懂也没有关系,我们直接来举个低维的例子看看具体是怎么做的吧!
首先,我们建立一个三维直角坐标系
在里面撒上一些点,当然,每个点具有三个维度的(经过标准化的)观测值。
计算每个点的每个维度的算术平均,我们得到所有点的重心(下图中红点)。
移动坐标系,使原点与重心重合。
接着,我们找到所有数据点的最优拟合直线,称为PC1,将数据点投影上去,也就是说取过每个数据点(图中为i)正交于PC1的直线与PC1的交点。
接下来再在与PC1正交的方向中找到一条最适回归线经过原点,这样就形成了一个平面(二维空间),然后通过数据点在PC1和PC2上的投影就能找到在平面上的投影。这样一来,三维数据向二维的降维就完成啦!
下面以sklearn.datasets内置的鸢尾花数据为例,展示用python代码绘制有置信椭圆的散点图。
import numpy as np
from matplotlib.patches import Ellipse
import pandas as pd
import matplotlib.pyplot as plt
import random
from sklearn.decomposition import PCA
import matplotlib.pyplot as plt
from sklearn.datasets import load_iris
''''''用于计算样本点的协方差矩阵''''''
def plot_point_cov(points, nstd=3, ax=None, **kwargs):
# 求所有点的均值作为置信圆的圆心
pos = points.mean(axis=0)
# 计算协方差矩阵
cov = np.cov(points, rowvar=False)
return plot_cov_ellipse(cov, pos, nstd, ax, **kwargs)
''''''计算置信椭圆的参数''''''
def plot_cov_ellipse(cov, pos, nstd=3, ax=None, **kwargs): # nstd=3代表99% 的置信区间
def eigsorted(cov):
cov = np.array(cov)
vals, vecs = np.linalg.eigh(cov)
order = vals.argsort()[::-1]
return vals[order], vecs[:, order]
if ax is None:
ax = plt.gca()
# 计算输入协方差矩阵的特征值和特征向量并返回排好序的结果
vals, vecs = eigsorted(cov)
# 计算向量 vecs 的第一列的极角,并将结果转换为角度制
theta = np.degrees(np.arctan2(*vecs[:, 0][::-1]))
# 得到绘制的椭圆的宽度和高度
width, height = 2 * nstd * np.sqrt(vals)
ellip = Ellipse(xy=pos, width=width, height=height, angle=theta, **kwargs)
ax.add_artist(ellip)
return ellip
''''''画置信圆''''''
def show_ellipse(X_pca, y, pca, flag=1):
# 定义颜色
colors = [''tab:blue'', ''tab:orange'', ''seagreen'']
regions = [''Ethiopia'', ''Somalia'', ''Kenya'']
# 定义分辨率
plt.figure(dpi=300, figsize=(8, 6))
# 三分类则为3
for i in range(0, 3):
pts = X_pca[y == int(i), :]
new_x, new_y = X_pca[y==i, 0], X_pca[y==i, 1]
plt.plot(new_x, new_y, ''.'', color=colors[i], label=regions[i], markersize=14)
plot_point_cov(pts, nstd=3, alpha=0.25, color=colors[i])
# 添加坐标轴
plt.xlim(-3.5, 4.5)
plt.ylim(-1.5, 1.7)
plt.xticks(size=16, family=''Times New Roman'')
plt.yticks(size=16, family=''Times New Roman'')
font = {''family'': ''Times New Roman'', ''size'': 16}
plt.xlabel(''PC1 ({} %)''.format(round(pca.explained_variance_ratio_[0] * 100, 2)), font)
plt.ylabel(''PC2 ({} %)''.format(round(pca.explained_variance_ratio_[1] * 100, 2)), font)
plt.legend(prop={"family": "Times New Roman", "size": 9}, loc=''upper right'')
plt.show()
labels = [''setosa'', ''versicolor'', ''virginica'']
iris = load_iris() #读入鸢尾花数据
X = iris.data
y = iris.target_names[iris.target]
print("y length--------", len(y))
y_category = pd.Categorical(y,ordered=True,categories=[''setosa'', ''versicolor'', ''virginica''])
y = y_category.codes
print(y)
print(y.shape)
print(type(y[0]))
n_components = 2 #为了绘图方便,将PCA的主成分设为2
pca = PCA(n_components=n_components) #PCA主成分分析
X_pca = pca.fit_transform(X) #数据标准化
show_ellipse(X_pca, y, pca)
产生的散点图如上图所示。比较重要的说明都写成注释标在代码里了,值得注意的是,在函数plot_cov_ellipse中,nstd=3表示椭圆的长度和宽度分别扩展到 3 倍标准差的大小,覆盖了大约 99.73% 的数据。这是因为在正态分布中,大约有 99.73% 的数据落在距离均值三个标准差的范围内。因此,使用 nstd=3 绘制置信椭圆通常被认为是覆盖 99% 的置信区间。如果需要95%的置信区间时可以将nstd设为2。但需要注意的是,这里所提到的百分比是基于正态分布的假设。
好了,今天关于PCA主成分分析作图的分享就到这里了,赶紧把iris换成自己的数据集试试吧!祝大家在科研道路上一帆风顺。
.
文末看点|lumingbio
上海鹿明生物科技有限公司是欧易生物旗下从事蛋白质组及代谢组质谱检测的专业质谱组学服务公司。公司建有国内第一个空间代谢组商业服务平台,深耕质谱组学检测分析,具体包括空间代谢组、双平台代谢组、靶向代谢组、TMT标记定量蛋白组、翻译后修饰蛋白组、4D-DIA蛋白组、单细胞及超微量蛋白组、空间蛋白组等。创新质谱组学平台广泛应用于机制解析、分型诊断、标志物筛选、药靶发掘等多个领域。公司并先后获得高新技术企业、上海市专精特新企业并建有院士专家工作站,自有包括tims tof pro2在内的各类大型质谱近二十台套,年服务项目超2000项。鹿明生物协助合作伙伴发表SCI论文近千篇,成功打造以硬数据、好服务为基础,以空间代谢组为特色的质谱组学检测服务公司品牌。
精彩往期推荐
2023-05-4
2023-04-17
2023-04-12
2023-03-17
END
意识形态的卑微主体 撰文
欢迎转发到朋友圈
本文系鹿明生物原创
转载请注明本文转自鹿明生物
我知道你在看哟
点“阅读原文”了解更多
04-24
激光在激光粒度分析仪中的作用04-24 真理光学粒度仪
LT3600 Plus激光粒度分析仪04-24 真理光学
真理光学诚邀你参加粉体圈第八届全国氧化铝会议04-24 真理光学粒度仪
珂睿科技诚邀您参加广西分析仪器设备应用技术交流会!04-23 珂睿marketing
终于来啦,MitoTracker小包装04-23 赛默飞生命科学
践行新质生产力:Chromeleon CDS简化您的工作流04-23 飞飞
【报名火爆】2024单细胞蛋白质组学技术与产业应用研讨会线上直播通道发布!04-23
特洁安Aquafine助力河南电子半导体客户高品质生产,为“中国芯”提供有力保障04-23
隆重上市!第六代频率步进三维探地雷达突破地下调查的界限04-23 专业的
降本增效 | 奥豪斯称重产品助力制药行业04-23 奥豪斯
Aliben动态 | 俄罗斯科学院院士Valery Tuchin教授到访艾立本科技参观交流04-23 艾立本科技
春启青莲礼,血浆免费试 | 高深度血浆蛋白质组限时免费测!04-23
抢占报名 | 4月25日“御光同行”光电技术与应用研讨会昆明专场04-23 聚焦光电前沿领域
【Vocus B文献分享】一种可检测有机和无机物种的中压化学电离反应腔表征04-23
德国元素TOC总有机碳分析仪线下用户培训邀请函(第一轮通知)04-23
最高91分,机会巨大!答题赛最后12小时,通道即将关闭!04-23 市场宣传部
【 Stage-RTL反射率测试】典型配置、硬件说明、软件操作04-23
相约青岛-第六届大气臭氧污染防治研讨会04-22 TOFWERK中国
从专家共识看吉比爱如何布局质谱自动化及应对临床质谱挑战04-22 华大吉比爱