这是假设的树状图(请参见下面的代码-使用随机数生成器可能会得到不同的图)
我的问题是,有没有一种方法可以根据权重的分组方式为每个权重动态分配权重。
例如,在最高级别,我们看到两个单独的集群(ACE)和(DHBIFG),因此为每个组分配50% 下降一个级别,我们看到ACE可以分为A和CE,因此25%分为A,25%分为(CE),最后在C和E之间分为12.5%和12.5。对于其他集群也是如此
最后,您将获得以下分配
A-25% B-12.5% C-12.5% D&E-各12.5% B-12.5% 我-6.25% F&G-每个3.125%
总和应为100%
无论如何,这可以动态完成吗? 我正在使用scipy.cluster.hierarchy生成此代码(以下代码)
from scipy.cluster.hierarchy import linkage, dendrogram
df = pd.DataFrame(np.random.randint(1,100,size=(100, 9)), columns=list('ABCDEFGHI'))
names = df.columns
from sklearn.preprocessing import normalize
movements = df.pct_change().dropna()
movements = movements.transpose()
# Normalize the movements: normalized_movements
normalized_movements = normalize(movements)
# Calculate the linkage: mergings
mergings = linkage(normalized_movements, method='complete')
# Plot the dendrogram
dendrogram(
mergings,
labels=names,
leaf_rotation=90,
leaf_font_size=6
)
from scipy.cluster.hierarchy import fcluster
labels = fcluster(mergings, 1, criterion='distance')
# Create a DataFrame with labels and varieties as columns: df
df = pd.DataFrame({'labels': labels, 'names': df.columns})
# Create crosstab: ct
ct = pd.crosstab(df['labels'], df['names'])
print(ct)
plt.show()