Hiearchical агломерационная кластеризация с> 3 функциями - PullRequest
0 голосов
/ 05 декабря 2018

Введение

Я пытаюсь подтвердить, что мое понимание того, как работает иерархическая агломерационная кластеризация в python, действительно правильно.Итак, для панды DataFrame, где у меня MxN (M = строки и N = столбцы), где M - это измеряемая характеристика, а N - пациент.

В моем случае у меня есть 83 признаков (m1, m2, ..., m83) и 6 пациентов (n1, n2, .., n6) .Таким образом, для каждого пациента я измеряю 83 функции, и меня интересует, какие из функций перепредставлены и недопредставлены для каждого пациента в отдельности, а также для группировки пациентов на основе представления этих функций.Итак, я делаю это, выполняя иерархическую агломерационную кластеризацию, выводя тепловую карту со связанной дендрограммой с использованием пакета Seaborn.

Итак, большинство примеров обычно включают в себя матрицу MxN, где N = 2 и M может быть любого размера.,В этом случае это будет представлено в графе в виде двух наших столбцов, являющихся нашими координатами x, y в двумерном графе.Добавление дополнительного пациента / столбца будет означать добавление дополнительного параметра z в мою систему координат, что приведет к 3-мерному графику с координатами x, y, z для каждого пациента / столбца для всех измеренных функций М.

Пример Panda DataFrame.

Предварительный просмотр только первых и последних 3 строк и столбцов.

(Pdb) feature_df

       Patient1   Patient2  Patient3   Patient4   Patient5   Patient6

Feature1   4.686681   1.718879  0.772530   2.085830   2.755356   2.549348

Feature2   1.605639   1.098595  0.000000   0.084507  19.267667   4.056351

Feature3   0.000000   0.063615  0.010603   0.000000   0.005301   0.037109
...             ...        ...       ...        ...        ...        ...
Feature81  0.213393   0.000000  0.000000   0.000000   0.106696   0.000000

Feature82  2.628437   2.813818  0.933526   2.416573   0.695179   2.078915

Feature83  0.000000   0.000000  0.000000   0.000000   0.000000   0.000000


[83 rows x 6 columns]

Код

Я выполняю преобразование log2 всех необработанных значений (необработанное значение является значением счетчика для каждой функции, то есть частоты) для всех необработанных значений, которые были 0 (после преобразования log2 становятся -infно заменены на 0) замаскированы в тепловой карте, но, очевидно, включены в кластерный анализ.

feature_df = pd.DataFrame(features, columns=sample_list, index=gene_expression_list)
feature_df.applymap(np.log2).replace(float('-inf'),0)
mask = feature_df.isin(values=[0])
sns.clustermap(feature_df, metric="euclidean", method="ward", 
mask=mask, cmap="Blues")
plt.show()

Heatmap of clustered features

Вопрос

  1. Правильно ли мое понимание выше?
  2. Если да, то для наборов данных с> 3 измерениями (3 пациента) какие методы расстояния считаются эффективными, так как я предполагаю, чтоЕвклидово расстояние расстояние не будетбыть наиболее представительным?
  3. Наконец, если мое понимание верно, я вижу, как можно создать дендрограмму, чтобы сгруппировать объекты / строки, но я не вижу, как создается дендрограмма, чтобы сгруппировать пациентов / столбцы в различныегруппы.

Любые советы, предложения или мысли приветствуются.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...