У меня есть датафрейм с 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)
Может ли кто-нибудь объяснить, какая процедура будет правильной?