首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PCA绘图参数

PCA绘图参数
EN

Stack Overflow用户
提问于 2021-06-03 21:46:17
回答 1查看 58关注 0票数 2

我是python的初学者,试图使用pandassklearn.preprocessingsklearn.decompositionMatplotlib.pyplot创建一个两个分量的PCA图。

我的数据框架非常大,涉及不同植物种类的特征,有许多变量(>100列),我想比较其中一个特征/列(茎长度)对数据方差的影响。茎长度的柱子由浮子组成,大小从0到大约75 to。

我想画一张PCA图,比较树干长度>40 of和树干长度<40 of时特征的方差。然而,我不知道如何处理这件事。

我一直使用以下网站作为guide for the PCA plot

我已经编写了以下代码:

代码语言:javascript
复制
import pandas as pd
from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA
import matplotlib.pyplot as plt

df = pd.read_csv("plant_data.csv")

x = StandardScaler().fit_transform(x)

plt.style.use("seaborn-darkgrid")

pca = PCA(n_components=2)
principalComponents = pca.fit_transform(x)
principalDf = pd.DataFrame(data = principalComponents, 
                           columns = ['principal component 1', 'principal component 2'])
finalDf = pd.concat([principalDf, df[['stem_length']]], axis = 1)

如何设置参数stem_length >40、stem_length <40的条件?

EN

回答 1

Stack Overflow用户

发布于 2021-06-03 22:28:23

问题链接中的给定数据集称为"Iris数据集“。考虑到这一点,以及您的具有两个主成分的工作示例,您现在拥有了具有三个特征(或尺寸或列-在excel中)的finalDF

现在,您需要定义一个功能,它可以通过以下方式获得:

代码语言:javascript
复制
finalDF['stem_length_gt_40'] = finalDF['stem_length'].apply(lambda x: 1 if x > 40 else 0)

代码创建了另一个名为stem_length_gt_40的列,如果stem_length > 40否则为0,则该列的值为1

考虑到这一点,现在您可能可以使用seaborn.scatterplot根据stem_length_gt_40绘制PCA-1 vs. PCA-2并对其进行不同的颜色显示,如下所示:

代码语言:javascript
复制
import seaborn as sns
import matplotlib.pyplot as plt

# plt.style.use("seaborn-darkgrid")

sns.scatterplot(x = 'principal component 1', y = 'principal component 2', data = finalDF, hue = 'stem_length_gt_40')

您可以通过here了解有关sns.scatterpolt的更多信息。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67822663

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档