【问题标题】:PCA plot parametersPCA 绘图参数
【发布时间】:2021-08-21 15:33:09
【问题描述】:

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

我的数据框非常大,涉及到不同种类植物的特征,有很多变量(>100 列),我想比较其中一个特征/列(茎长)对数据的方差。茎长列由浮点数组成,大小范围从 0 到 75cm 左右。

我想绘制一个 PCA,比较茎长 >40cm 和茎长

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

我已经写了如下代码:

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

【问题讨论】:

  • 您想为词干长度添加新功能吗?
  • 我不太确定 - 我不完全理解所涉及的术语,因为我几乎是一个完整的初学者。一个特征本质上是一个参数,对吧?所以当我创建情节时,会有一组数据点根据茎长>40cm的植物和另一组数据点根据茎长
  • @Billy 你了解 PCA 方法的用途吗?
  • 当您绘制 PC 时,您并不是在“比较特征的方差”。如果您查看您引用的链接,PC 会捕获原始数据中方差的某个比率,但它们不是方差
  • 你能说清楚你想画什么吗?

标签: python pandas matplotlib scikit-learn pca


【解决方案1】:

问题链接中的给定数据集称为“虹膜数据集”。考虑到这一点,以及您使用 2 个主要组件的工作示例,您现在拥有具有三个特征(或维度或列 - 在 excel 中)的 finalDF

现在,您需要定义一个功能,可以这样实现:

finalDF['stem_length_gt_40'] = finalDF['stem_length'].apply(lambda x: 1 if x > 40 else 0)

代码创建另一个名为stem_length_gt_40 的列,其值为1 if stem_length > 40 else 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')

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

【讨论】:

    猜你喜欢
    • 2012-05-02
    • 2017-08-04
    • 1970-01-01
    • 1970-01-01
    • 2019-03-09
    • 2012-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多