Как получить результаты `skbio` PCoA (Анализ основных координат)?

Я смотрю на attributes из skbio'sPCoA метод (указан ниже). Я новичок в этом API и я хочу быть в состоянии получить eigenvectors и исходные точки проецируются на новую ось, аналогичную .fit_transform в sklearn.decomposition.PCA так что я могу создать некоторые PC_1 vs PC_2в стиле участков. Я понял, как получить eigvals а также proportion_explained но features возвращается как None,

Это потому что он в бета-версии?

Если есть какие-то учебники, которые используют это, это было бы очень признательно. Я большой поклонник scikit-learn и хотел бы начать использовать больше scikit's товары.

|  Attributes
 |  ----------
 |  short_method_name : str
 |      Abbreviated ordination method name.
 |  long_method_name : str
 |      Ordination method name.
 |  eigvals : pd.Series
 |      The resulting eigenvalues.  The index corresponds to the ordination
 |      axis labels
 |  samples : pd.DataFrame
 |      The position of the samples in the ordination space, row-indexed by the
 |      sample id.
 |  features : pd.DataFrame
 |      The position of the features in the ordination space, row-indexed by
 |      the feature id.
 |  biplot_scores : pd.DataFrame
 |      Correlation coefficients of the samples with respect to the features.
 |  sample_constraints : pd.DataFrame
 |      Site constraints (linear combinations of constraining variables):
 |      coordinates of the sites in the space of the explanatory variables X.
 |      These are the fitted site scores
 |  proportion_explained : pd.Series
 |      Proportion explained by each of the dimensions in the ordination space.
 |      The index corresponds to the ordination axis labels

Вот мой код для генерации principal component analysis объект.

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.datasets import load_iris
from sklearn.preprocessing import StandardScaler
from sklearn import decomposition
import seaborn as sns; sns.set_style("whitegrid", {'axes.grid' : False})
import skbio
from scipy.spatial import distance

%matplotlib inline
np.random.seed(0)

# Iris dataset
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 4

Se_targets = pd.Series(load_iris().target, 
                       index = ["iris_%d" % i for i in range(load_iris().data.shape[0])], 
                       name = "Species")

# Scaling mean = 0, var = 1
DF_standard = pd.DataFrame(StandardScaler().fit_transform(DF_data), 
                           index = DF_data.index,
                           columns = DF_data.columns)

# Distance Matrix
Ar_dist = distance.squareform(distance.pdist(DF_standard.T, metric="braycurtis")) # (m x m) distance measure
DM_dist = skbio.stats.distance.DistanceMatrix(Ar_dist, ids=DF_standard.columns)
PCoA = skbio.stats.ordination.pcoa(DM_dist)

1 ответ

Решение

Вы можете получить доступ к преобразованным координатам выборки с помощью OrdinationResults.samples, Это вернет pandas.DataFrame Индексируется по идентификатору выборки (т.е. идентификаторам в вашей матрице расстояний). Поскольку анализ главных координат работает на матрице расстояний выборок, преобразованные координаты объектов (OrdinationResults.features) не доступны. Другие методы ординации в Scikit-Bio, принимающие образец таблицы характеристик x в качестве входных данных, будут иметь преобразованные координаты объектов (например, CA, CCA, RDA).

Примечание: distance.squareform вызов не нужен, потому что skbio.DistanceMatrix поддерживает массивы квадратной или векторной формы.

Другие вопросы по тегам