python - PCA 绘图参数
问题描述
我是 python 的初学者,尝试使用pandas
、sklearn.preprocessing
、sklearn.decomposition
和Matplotlib.pyplot
.
我的数据框非常大,与不同植物种类的特征有关,有很多变量(>100 列),我想比较其中一个特征/列(茎长)对方差的影响数据。茎长列由浮动组成,大小范围从 0 到 75 厘米左右。
我想绘制一个 PCA,比较茎长 >40cm 和茎长 <40cm 时的特征方差。但是我不知道如何进行。
我一直在使用以下网站作为PCA 图的指南。
我已经编写了以下代码:
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?
解决方案
问题链接中的给定数据集称为“虹膜数据集”。考虑到这一点,以及您使用 2 个主要组件的工作示例,您现在拥有finalDF
三个特征(或维度,或列 - 在 excel 中)。
现在,您需要定义一个特征,它可以实现为:
finalDF['stem_length_gt_40'] = finalDF['stem_length'].apply(lambda x: 1 if x > 40 else 0)
该代码创建另一个名为if elsestem_length_gt_40
的列。1
stem_length > 40
0
考虑到这一点,现在您可能可以根据以下使用PCA-1 vs. PCA-2
对它们进行不同的绘制和着色:stem_length_gt_40
seaborn.scatterplot
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')
sns.scatterpolt
你可以在这里了解更多。
推荐阅读
- c# - 将字典转换为对象模型
- python-3.x - google.api_core.exceptions.Forbidden:403 GET
- android - android中的神经拟态标签
- python - 无法加载短网址的图片
- reactjs - 无法使用 react-intl-tel-input 组件对未安装的组件执行 React 状态更新
- javascript - 检查对象中的任何数组是否包含空值
- linux-kernel - RPi4:设备驱动程序 - 带有浮点数的 pr_info 导致构建错误
- android - 如何制作一个文本,它会水平滚动其内容,而内容长于 android jetpack compose 中的大小?
- python - 使用会话用户而不是通过凭据进行连接
- visual-studio - MyGet 不显示 nuget 包自包含图标