首页 > 解决方案 > PCA 绘图参数

问题描述

我是 python 的初学者,尝试使用pandassklearn.preprocessingsklearn.decompositionMatplotlib.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?

标签: pythonpandasmatplotlibscikit-learnpca

解决方案


问题链接中的给定数据集称为“虹膜数据集”。考虑到这一点,以及您使用 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的列。1stem_length > 400

考虑到这一点,现在您可能可以根据以下使用PCA-1 vs. PCA-2对它们进行不同的绘制和着色:stem_length_gt_40seaborn.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你可以在这里了解更多。


推荐阅读