我有一个带有两个类“是”和“否”的数据框。使用scipy层次聚类,我发现了2个聚类。这是我的代码
from scipy.cluster.hierarchy import linkage, dendrogram
from scipy.spatial.distance import pdist
from scipy.cluster.hierarchy import fcluster
Mdist_matrix = pdist(x_Minmax, metric= 'cityblock')
MSlink = linkage (Mdist_matrix , method = 'single' , metric = 'cityblock')
crsm = fcluster(MClink, k , criterion='maxclust')
arr = np.unique(crsm, return_counts = True)
# print(arr)
dfcluster= dfcluster.copy()
dfcluster['Clabels'] = pd.Series(crsm, index=dfcluster.index)
No = dfcluster[df['status'] == 0]['Clabels'].value_counts()
print("CNO\n",No)
Yes= dfcluster[df['status'] == 1]['Clabels'].value_counts()
print("Cyes\n",Yes)
The output looks like this one
我想计算每个簇的熵和簇的纯度,如何计算每个簇中``是''和``否''的概率? 我尝试以这种方式Fastest way to compute entropy in python来做到这一点,但是我不清楚。
答案 0 :(得分:0)
我为纯洁而回答。 您的列联矩阵(如果不熟悉,请参见this)如下:
| 1 | 2 |
------|------|-----|
CNO | 7244 | 544 |
------|------|-----|
CYES | 2136 | 76 |
-------------------+
然后,有一个公式可以从权变矩阵中计算出纯度:
purity_score = np.sum(np.amax(contingency_matrix, axis=0)) / np.sum(contingency_matrix)