如何获取 `skbio` 的 PCoA(主坐标分析)结果?

我在查看 skbioPCoA 方法的 attributes(如下所示)。我对这个 API 不太熟悉,我想能够获取 eigenvectors 以及原始点投影到新轴上的坐标,类似于 sklearn.decomposition.PCA 中的 .fit_transform,这样我就可以创建一些 PC_1 vs PC_2 风格的图表。我已经搞清楚了如何获取 eigvalsproportion_explained,但 features 返回的是 None

这是因为它处于测试阶段吗?

如果有使用这个的教程,我将不胜感激。我是 scikit-learn 的超级粉丝,并且希望开始使用更多 scikit 的产品。

|  Attributes |  ---------- |  short_method_name : str |      缩写后的排序方法名称。 |  long_method_name : str |      排序方法名称。 |  eigvals : pd.Series |      结果特征值。索引对应于排序轴标签。 |  samples : pd.DataFrame |      样本在排序空间中的位置,由样本 ID 行索引。 |  features : pd.DataFrame |      特征在排序空间中的位置,由特征 ID 行索引。 |  biplot_scores : pd.DataFrame |      样本相对于特征的相关系数。 |  sample_constraints : pd.DataFrame |      站点约束(约束变量的线性组合):在解释变量 X 空间中的站点坐标。这些是拟合的站点分数。 |  proportion_explained : pd.Series |      在排序空间中每个维度解释的比例。索引对应于排序轴标签

这是我生成 主成分分析 对象的代码。

import numpy as npimport pandas as pdimport matplotlib.pyplot as pltfrom sklearn.datasets import load_irisfrom sklearn.preprocessing import StandardScalerfrom sklearn import decompositionimport seaborn as sns; sns.set_style("whitegrid", {'axes.grid' : False})import skbiofrom scipy.spatial import distance%matplotlib inlinenp.random.seed(0)# Iris 数据集DF_data = pd.DataFrame(load_iris().data,                        index = ["iris_%d" % i for i in range(load_iris().data.shape[0])],                       columns = load_iris().feature_names)n,m = DF_data.shape# print(n,m)# 150 4Se_targets = pd.Series(load_iris().target,                        index = ["iris_%d" % i for i in range(load_iris().data.shape[0])],                        name = "Species")# 标准化,均值 = 0,方差 = 1DF_standard = pd.DataFrame(StandardScaler().fit_transform(DF_data),                            index = DF_data.index,                           columns = DF_data.columns)# 距离矩阵Ar_dist = distance.squareform(distance.pdist(DF_standard.T, metric="braycurtis")) # (m x m) 距离测量DM_dist = skbio.stats.distance.DistanceMatrix(Ar_dist, ids=DF_standard.columns)PCoA = skbio.stats.ordination.pcoa(DM_dist)

enter image description here


回答:

你可以通过 OrdinationResults.samples 访问转换后的样本坐标。这将返回一个由样本 ID 行索引的 pandas.DataFrame(即距离矩阵中的 ID)。由于主坐标分析是对样本的距离矩阵进行操作,因此转换后的特征坐标(OrdinationResults.features)不可用。scikit-bio 中接受样本 x 特征表作为输入的其他排序方法将具有转换后的特征坐标(例如 CA、CCA、RDA)。

旁注:distance.squareform 调用是不必要的,因为 skbio.DistanceMatrix 支持方形或向量形式的数组。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注