Обычно, когда я делаю дендрограммы и тепловые карты, я использую матрицу расстояний и делаю кучу вещей SciPy
. Я хочу попробовать Seaborn
, но Seaborn
хочет, чтобы мои данные были в прямоугольной форме (rows = samples, cols = attributes, а не матрица расстояний)?
Я по существу хочу использовать Seaborn
в качестве бэкэнд для вычисления моей дендрограммы и привязки ее к моей тепловой карте. Это возможно? Если нет, это может быть особенностью в будущем.
Возможно, есть параметры, которые я могу настроить, поэтому вместо прямоугольной матрицы может взять матрицу расстояний?
Здесь используется:
seaborn.clustermap¶
seaborn.clustermap(data, pivot_kws=None, method='average', metric='euclidean',
z_score=None, standard_scale=None, figsize=None, cbar_kws=None, row_cluster=True,
col_cluster=True, row_linkage=None, col_linkage=None, row_colors=None,
col_colors=None, mask=None, **kwargs)
Мой код ниже:
from sklearn.datasets import load_iris
iris = load_iris()
X, y = iris.data, iris.target
DF = pd.DataFrame(X, index = ["iris_%d" % (i) for i in range(X.shape[0])], columns = iris.feature_names)
Я не думаю, что мой метод является правильным ниже, потому что я даю ему предварительно вычисленную матрицу расстояний и НЕ прямоугольную матрицу данных по ее запросу. Нет примеров использования матрицы корреляции/расстояния с clustermap
, но для https://stanford.edu/~mwaskom/software/seaborn/examples/network_correlations.html, но порядок не кластеризован w/простой sns.heatmap
func.
DF_corr = DF.T.corr()
DF_dism = 1 - DF_corr
sns.clustermap(DF_dism)