Seaborn clustermap предоставляет собственную матрицу связей - PullRequest
0 голосов
/ 17 сентября 2018

У меня есть набор данных, содержащий около 400 образцов и около 20 регионов. В этом наборе данных «1» указывает на разбитую область (разрыв в ДНК в этой области), а «0» - на неповрежденную область. Я хочу кластеризовать эти данные с seaborn.clustermap. Поскольку поврежденные регионы более информативны, чем нетронутые регионы, я изначально выбрал бы расстояние по Джакарду Но у меня есть несколько пустых строк (без разрывов вообще). Это приводит к аварии морского побережья (0/0 -> nan). Чтобы решить эту проблему, я попытался установить свою собственную матрицу связей, но документация довольно скудная, и я не могу понять это. У кого-нибудь есть идеи?

import pandas as pd
import seaborn as sns; sns.set(color_codes=True)
import matplotlib.pyplot as plt
import numpy as np
import scipy.cluster.hierarchy


# my dataset is called 'df'
print(df.shape)
## = (464, 23) ##
Y = scipy.spatial.distance.pdist(df, metric='jaccard')
Y = np.nan_to_num(Y)  # distance matrix
linkage = scipy.cluster.hierarchy.linkage(Y, method='average') # 
linkage matrix
print(len(Y))
## 107416 . ##
print(len(linkage))
## 463 ##

cmap = sns.cubehelix_palette(as_cmap=True, rot=-.3, light=1)
sns.clustermap(df, cmap=cmap, row_linkage=linkage, col_linkage=linkage)
plt.show()

Это приводит к следующему сообщению об ошибке:

Traceback (most recent call last):
  File "/Users/nienke/Documents/stage/scripts/structuralvariants/realcluster.py", line 32, in <module>
    sns.clustermap(df, cmap=cmap, row_linkage=linkage, col_linkage=linkage)
  File "/Users/nienke/anaconda3/lib/python3.6/site-packages/seaborn/matrix.py", line 1301, in clustermap
    **kwargs)
  File "/Users/nienke/anaconda3/lib/python3.6/site-packages/seaborn/matrix.py", line 1142, in plot
    self.plot_matrix(colorbar_kws, xind, yind, **kws)
  File "/Users/nienke/anaconda3/lib/python3.6/site-packages/seaborn/matrix.py", line 1100, in plot_matrix
    self.data2d = self.data2d.iloc[yind, xind]
  File "/Users/nienke/anaconda3/lib/python3.6/site-packages/pandas/core/indexing.py", line 1367, in __getitem__
    return self._getitem_tuple(key)
  File "/Users/nienke/anaconda3/lib/python3.6/site-packages/pandas/core/indexing.py", line 1737, in _getitem_tuple
    self._has_valid_tuple(tup)
  File "/Users/nienke/anaconda3/lib/python3.6/site-packages/pandas/core/indexing.py", line 204, in _has_valid_tuple
    if not self._has_valid_type(k, i):
  File "/Users/nienke/anaconda3/lib/python3.6/site-packages/pandas/core/indexing.py", line 1674, in _has_valid_type
    return self._is_valid_list_like(key, axis)
  File "/Users/nienke/anaconda3/lib/python3.6/site-packages/pandas/core/indexing.py", line 1731, in _is_valid_list_like
    raise IndexError("positional indexers are out-of-bounds")
IndexError: positional indexers are out-of-bounds

Большое спасибо

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