您当前的位置:首页 > 互联网百科 > 大数据

使用PCA可视化数据

时间:2020-11-20 16:36:20  来源:  作者:

主成分分析(PCA)是一个很好的工具,可以用来降低特征空间的维数。PCA的显著优点是它能产生不相关的特征,并能提高模型的性能。

它可以帮助你深入了解数据的分类能力。在本文中,我将带你了解如何使用PCA。将提供Python代码,完整的项目可以在GitHub链接:https://github.com/conorosully/medium-articles。

使用PCA可视化数据

 

什么是PCA

我们先复习一下这个理论。如果你想确切了解PCA是如何工作的,我们不会详细介绍,网上有大量学习资源。

PCA用于减少用于训练模型的特征的数量。它通过从多个特征构造所谓的主成分(PC)来实现这一点。

PC的构造方式使得PC1方向在最大变化上尽可能地解释了你的特征。然后PC2在最大变化上尽可能地解释剩余特征,等等……PC1和PC2通常可以解释总体特征变化中的很大一部分。

另一种思考方法是,前两个PC可以很好地概括大部分特征。这很重要,因为正如我们将看到的,它允许我们在二维平面上可视化数据的分类能力。

数据集

让我们来看看一个实际的例子。我们将使用PCA来探索乳腺癌数据集(http://archive.ics.uci.edu/ml/datasets/breast+cancer+wisconsin+(diagnostic)),我们使用下面的代码导入该数据集。

import numpy as np
import pandas as pd
from sklearn.datasets import load_breast_cancer
cancer = load_breast_cancer()

data = pd.DataFrame(cancer['data'],columns=cancer['feature_names'])
data['y'] = cancer['target']

目标变量是乳腺癌检测的结果,恶性或良性。每次测试,都要取多个癌细胞。然后从每个癌细胞中采取10种不同的措施。这些测量包括细胞半径和细胞对称性。最后,为了得到特征值,我们计算了每个度量值的平均值、标准误差和最大值(不太好的),这样我们总共得到30个特征值。

在图中,我们仔细观察了其中两个特征——细胞的平均对称性(Benign)和最差平滑度(worst smoothness)。

使用PCA可视化数据

 

在图中,我们看到这两个特征可以帮助区分这两个类。那就是良性肿瘤往往更为对称和光滑。但是,仍然有很多重叠,所以仅仅使用这些特征的模型不会做得很好。

我们可以创建这样的图来了解每个特征的预测能力。但是有30个特征,这意味着有相当多的图要分析,他们也没有告诉我们如何作为一个整体来预测数据集。这我们可以引入PCA。

PCA-整个数据集

首先,我们对整个数据集进行主成分分析。我们使用下面的代码。

from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA

#标准化
scaler = StandardScaler()
scaler.fit(data)
scaled = scaler.transform(data)

#PCA
pca = PCA().fit(scaled)

pc = pca.transform(scaled)
pc1 = pc[:,0]
pc2 = pc[:,1]

#画出主成分
plt.figure(figsize=(10,10))

colour = ['#ff2121' if y == 1 else '#2176ff' for y in data['y']]
plt.scatter(pc1,pc2 ,c=colour,edgecolors='#000000')
plt.ylabel("Glucose",size=20)
plt.xlabel('Age',size=20)
plt.yticks(size=12)
plt.xticks(size=12)
plt.xlabel('PC1')

我们首先标准化特征,使它们的平均值为0,方差为1。这一点很重要,因为主成分分析通过最大化主成分分析所解释的方差来工作。

一些特征由于其没有经过标准化自然会有更高的方差。例如,以厘米为单位测量的距离将比以公里为单位测量的相同距离具有更高的方差。在不缩放特征的情况下,主成分分析将被那些高方差特征“吸引”。

缩放完成后,我们会拟合PCA模型,并将我们的特征转换为PC。由于我们有30个特征,我们最多可以有30个PC。但是,对于可视化,我们只对前两个感兴趣。然后使用PC1和PC2创建如图所示的散点图。

使用PCA可视化数据

 

在图2中,我们可以看到两个不同的簇。虽然仍然有一些重叠,但是簇比我们在之前的图中要清晰得多。这告诉我们,作为一个整体,这个数据集在区分恶性肿瘤和良性肿瘤方面会做得很好。

我们还应该考虑到,我们只关注前两个PC,因此并不是所有特征的变化都被捕获。这意味着使用所有特征训练的模型仍然可以正确预测异常值(即聚类中不清楚的点)。

在这一点上,我们应该提到这种方法的一个警告。我们提到PC1和PC2可以解释你的特征中很大一部分的差异。然而,这并不总是真的。在这种情况下,这些PC可以被认为是对你的特征的错误总结。这意味着,即使你的数据能够很好地分离,你也可能无法获得如上图所示的清晰的簇。

我们可以通过查看PCA-scree图来确定。我们使用下面的代码为这个分析创建scree图,

var = pca.explained_variance_[0:10] #percentage of variance explained
labels = ['PC1','PC2','PC3','PC4','PC5','PC6','PC7','PC8','PC9','PC10']

plt.figure(figsize=(15,7))
plt.bar(labels,var,)
plt.xlabel('Pricipal Component')
plt.ylabel('Proportion of Variance Explained')

它本质上是一个柱状图,其中每个柱状图的高度是相关PC解释的方差百分比。我们看到,总共只有大约20%的特征方差是由PC1和PC2解释的。即使只解释了20%,我们仍然得到两个不同的集群。这强调了数据的预测能力。

使用PCA可视化数据

 

PCA-特征组

到目前为止,我们已经使用主成分分析来了解整个特征集对数据的分类效果。我们也可以使用这个过程来比较不同的特征组。例如,假设我们想知道细胞的对称性和光滑性是否比细胞的周长和凹陷性更好。

group_1 = ['mean symmetry', 'symmetry error','worst symmetry',
'mean smoothness','smoothness error','worst smoothness']

group_2 = ['mean perimeter','perimeter error','worst perimeter', 
'mean concavity','concavity error','worst concavity']

我们首先创建两组特征。第一组包含所有与对称性和光滑性有关的特征,第二组包含所有与周长和凹陷性有关的特征。然后,除了使用这两组特征外,我们以与之前相同的方式进行主成分分析。这个过程的结果如下图所示。

使用PCA可视化数据

 

我们可以看到,对于第一组,有一些分离,但仍然有很多重叠。相比之下,第2组有两个不同的簇。因此,从这些图中,我们可以预期第2组的特征(即细胞周长和凹陷)将是更好的预测肿瘤是恶性还是良性的指标。

最终,这将意味着使用组2中的特征的模型比使用组1中的特征的模型具有更高的精度。现在,让我们来验证这个假设。

我们使用下面的代码来训练一个使用两组特征的logistic回归模型。在每种情况下,我们使用70%的数据来训练模型,剩下的30%用来测试模型。

from sklearn.model_selection import train_test_split
import sklearn.metrics as metric
import statsmodels.api as sm

for i,g in enumerate(group):

    x = data[g]
    x = sm.add_constant(x)
    y = data['y']
    x_train, x_test, y_train, y_test = train_test_split(x,y,test_size=0.3, 
                                                        random_state = 101)

    model = sm.Logit(y_train,x_train).fit() #fit logistic regression model

    predictions = np.around(model.predict(x_test)) 
    accuracy = metric.accuracy_score(y_test,predictions)

    print("Accuracy of Group {}: {}".format(i+1,accuracy))

第一组测试集的准确率为74%,相比之下,第二组的准确率为97%。因此,组2的特征明显是更好的预测因子,这正是我们从主成分分析结果中所看到的。

最后,我们将了解如何在开始建模之前使用PCA来加深对数据的理解。了解哪些特征是可预测的,将在特征选择方面给你带来优势。此外,查看特征的总体分类能力将使你了解预期的分类精度。

如前所述,这种方法并不能完全证明,因此应与其他数据勘探图和汇总统计一起使用。一般来说,在开始建模之前,最好从尽可能多的不同角度查看数据。



Tags:可视化数据   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
主成分分析(PCA)是一个很好的工具,可以用来降低特征空间的维数。PCA的显著优点是它能产生不相关的特征,并能提高模型的性能。它可以帮助你深入了解数据的分类能力。在本文中,我将...【详细内容】
2020-11-20  Tags: 可视化数据  点击:(101)  评论:(0)  加入收藏
今天给大家分享一款超不错的Vue可视化图表数据大屏Dashboard。 基于Vue+Echarts+ElementUI构建的数据图表可视化大屏,star高达1.5K+。包含柱状图、折线图、热力图、预览面板...【详细内容】
2020-10-19  Tags: 可视化数据  点击:(1537)  评论:(0)  加入收藏
前言当我们在服务器搭建了一个MongoDB程序,有没有一款可视化管理工具管理MongoDB数据?今天就跟大家分享一款可视化数据管理工具。 MongoDB安装如果还没有装过MongoDB的伙伴们,...【详细内容】
2020-08-05  Tags: 可视化数据  点击:(63)  评论:(0)  加入收藏
Sampler是一个用于shell命令执行,可视化和警报的工具先看看效果图: 项目热度标星: 6047(功能还是很强大,很实用)拷贝: 257贡献人数: 3最后更新: 2019-08-20代码提交活跃度: 推荐指数:【...【详细内容】
2019-09-05  Tags: 可视化数据  点击:(277)  评论:(0)  加入收藏
数据库管理工具 DBeaver 社区版 6.1.5 已发布。值得关注的更新 数据查看器: 虚拟主/外键编辑器得到增强 修复了数据刷新过滤器的问题 在结果选项卡关闭之前添加确认对话 修复...【详细内容】
2019-08-20  Tags: 可视化数据  点击:(303)  评论:(0)  加入收藏
▌简易百科推荐
张欣安科瑞电气股份有限公司 上海嘉定 201801 摘要:随着电力行业各系统接入,海量数据涌现,如何利用电网信息化中大量数据,对客户需求进行判断分析,服务于营销链条,提升企业市场竞...【详细内容】
2021-12-14  安科瑞张欣    Tags:大数据   点击:(9)  评论:(0)  加入收藏
1、什么是数据分析结合分析工具,运用数据分析思维,分析庞杂数据信息,为业务赋能。 2、数据分析师工作的核心流程:(1)界定问题:明确具体问题是什么;●what 发生了什么(是什么)●why 为...【详细内容】
2021-12-01  逆风北极光    Tags:大数据   点击:(25)  评论:(0)  加入收藏
在实际工作中,我们经常需要整理各个业务部门发来的数据。不仅分散,而且数据量大、格式多。单是从不同地方汇总整理这些原始数据就花了大量的时间,更不用说还要把有效的数据收集...【详细内容】
2021-11-30  百数    Tags:数据   点击:(21)  评论:(0)  加入收藏
数据作为新的生产要素,其蕴含的价值日益凸显,而安全问题却愈发突出。密码技术,是实现数据安全最经济、最有效、最可靠的手段,对数据进行加密,并结合有效的密钥保护手段,可在开放环...【详细内容】
2021-11-26  炼石网络    Tags:数据存储   点击:(17)  评论:(0)  加入收藏
导读:网易大数据平台的底层数据查询引擎,选用了Impala作为OLAP查询引擎,不但支撑了网易大数据的交互式查询与自助分析,还为外部客户提供了商业化的产品与服务。今天将为大家分享...【详细内容】
2021-11-26  DataFunTalk    Tags:大数据   点击:(15)  评论:(0)  加入收藏
导读:数据挖掘是一种发现知识的手段。数据挖掘要求数据分析师通过合理的方法,从数据中获取与挖掘项目相关的知识。作者:赵仁乾 田建中 叶本华 常国珍来源:华章科技数据挖掘是一...【详细内容】
2021-11-23  华章科技  今日头条  Tags:数据挖掘   点击:(20)  评论:(0)  加入收藏
今天再给大家分享一个不错的可视化大屏分析平台模板DataColour。 data-colour 可视化分析平台采用前后端分离模式,后端架构设计采用微服务架构模式。 前端技术:Angularjs、Jq...【详细内容】
2021-11-04  web前端进阶    Tags:DashboardClient   点击:(39)  评论:(0)  加入收藏
在Kubernetes已经成了事实上的容器编排标准之下,微服务的部署变得非常容易。但随着微服务规模的扩大,服务治理带来的挑战也会越来越大。在这样的背景下出现了服务可观测性(obs...【详细内容】
2021-11-02  大数据推荐杂谈    Tags:Prometheus   点击:(40)  评论:(0)  加入收藏
同一产品对老客户的要价竟然比新客户要高?这是当下“大数据杀熟”的直接结果。近年来,随着平台经济的蓬勃发展,大数据在为用户服务之外,也引发了多种不合理现象。为了有效遏制“...【详细内容】
2021-10-29    海外网   Tags:大数据   点击:(31)  评论:(0)  加入收藏
本人03年开始从事贸易行业,多年来一直致力于外贸获客和跨境电商选品等领域,最近有些小伙伴反馈海关数据演示的都挺好为啥用起来不是那么回事?大家看到数据时关注的有产品、采购...【详细内容】
2021-10-28  QD云龙    Tags:数据   点击:(33)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条