Кластеризация данных с использованием Scipy и Seaborn - PullRequest
0 голосов
/ 01 октября 2019

У меня есть датафрейм с m строками и n столбцами. Например, m представляет разные бренды продукта, а n - страны, в которых используется данный бренд.

df >
   countryA countryB countryC 
A   0        1        2        
B   2        2        1 
C   1        2        1
D   2        1        1
E   1        0        0
F   1        2        2

В исходных данных много стран и много брендов.

Я бы хотелСгруппируйте эти данные и поймите, какие страны следуют той же тенденции в выборе бренда. т.е. кластеризовать страны вместе

Я попробовал следующие три метода. Выход отличается в каждом случае. Я не уверен, должна ли корреляционная матрица использоваться для вычисления pdist или должен использоваться исходный кадр данных.

МЕТОД 1:

def clustering(df):

    country_correlation = df.T.corr()
    linkage = hc.linkage(pdist(country_correlation, metric='euclidean'), method='average')
    gene_cluster = sns.clustermap(country_correlation ,
                                  cmap="binary",
                                  col_cluster=True,
                                  row_cluster=True,
                                  xticklabels=True,
                                  yticklabels=True,
                                  col_linkage=linkage,
                                  row_linkage=linkage)

МЕТОД 2:

def clustering(df):

    country_correlation = df.T.corr()
    linkage = hc.linkage(pdist(df.T, metric='euclidean'), method='average')
    gene_cluster = sns.clustermap(country_correlation ,
                                  cmap="binary",
                                  col_cluster=True,
                                  row_cluster=True,
                                  xticklabels=True,
                                  yticklabels=True,
                                  col_linkage=linkage,
                                  row_linkage=linkage)

МЕТОД 3:

def clustering(df):

    country_correlation = df.T.corr()
    linkage = hc.linkage(pdist(df.T, metric='correlation'), method='average')
    gene_cluster = sns.clustermap(country_correlation ,
                                  cmap="binary",
                                  col_cluster=True,
                                  row_cluster=True,
                                  xticklabels=True,
                                  yticklabels=True,
                                  col_linkage=linkage,
                                  row_linkage=linkage)

Может ли кто-нибудь объяснить, какая процедура будет правильной?

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