我使用的是dendrogram从scipy使用绘制层次聚类matplotlib如下:
mat = array([[1, 0.5, 0.9],
[0.5, 1, -0.5],
[0.9, -0.5, 1]])
plt.subplot(1,2,1)
plt.title("mat")
dist_mat = mat
linkage_matrix = linkage(dist_mat,
"single")
print "linkage2:"
print linkage(1-dist_mat, "single")
dendrogram(linkage_matrix,
color_threshold=1,
labels=["a", "b", "c"],
show_leaf_counts=True)
plt.subplot(1,2,2)
plt.title("1 - mat")
dist_mat = 1 - mat
linkage_matrix = linkage(dist_mat,
"single")
dendrogram(linkage_matrix,
color_threshold=1,
labels=["a", "b", "c"],
show_leaf_counts=True)
Run Code Online (Sandbox Code Playgroud)
我的问题是:第一,为什么mat和1-mat在这里给同一聚类?第二,如何使用树的每个分支来注释距离,dendrogram以便可以比较节点对之间的距离?
最后似乎show_leaf_counts忽略了标志,有没有办法打开它,以便显示每个类中的对象数量?谢谢.
以下是创建两个数据集的示例:
from sklearn.linear_model import LogisticRegression
from sklearn.datasets import make_classification
# data set 1
X1, y1 = make_classification(n_classes=2, n_features=5, random_state=1)
# data set 2
X2, y2 = make_classification(n_classes=2, n_features=5, random_state=2)
Run Code Online (Sandbox Code Playgroud)
我想使用LogisticRegression具有相同参数值的估计器来拟合每个数据集上的分类器:
lr = LogisticRegression()
clf1 = lr.fit(X1, y1)
clf2 = lr.fit(X2, y2)
print "Classifier for data set 1: "
print " - intercept: ", clf1.intercept_
print " - coef_: ", clf1.coef_
print "Classifier for data set 2: "
print " - intercept: ", clf2.intercept_
print " - coef_: ", …Run Code Online (Sandbox Code Playgroud) 我想编写代码来在python中绘制树形图.有一个简单的方法来实现它.
我编写的代码可以识别点数据集中的聚类,并希望生成一个树形图,显示每次迭代生成的聚类数量
例如,当我在这个数据集上运行我的代码时,第一次迭代得到1个集群

和第二次迭代的2个聚类

所以我想制作能够展示这一点的东西.但不知道从哪里开始

每个点都有一个'label'属性,该属性是每次迭代后该点所在的每个簇的列表.
也就是说,在这个例子中,一些点标签属于[0,0],而其他点是[0,1].所以,如果我使用scipy树形图,我将如何从这到连接格式
是否可以为Scipy的树状图的叶子标签指定颜色?我无法从文档中找到它.这是我到目前为止所尝试的:
from scipy.spatial.distance import pdist, squareform
from scipy.cluster.hierarchy import linkage, dendrogram
distanceMatrix = pdist(subj1.ix[:,:3])
dendrogram(linkage(distanceMatrix, method='complete'),
color_threshold=0.3,
leaf_label_func=lambda x: subj1['activity'][x],
leaf_font_size=12)
Run Code Online (Sandbox Code Playgroud)
谢谢.