5

私は scipy を初めて使用しますが、予想される樹状図を取得することができました。さらに質問があります。

  1. デンドログラムでは、いくつかのポイント間の距離0は表示されますが、画像の境界により表示されません。どうすれば境界線を削除し、y 軸の下限を に設定して-1、はっきりと見えるようにできますか。たとえば、これらのポイント間の距離は0(13,17)、(2,10)、(4,8,19) です。
  2. 特定の距離で剪定/切り捨てを行うにはどうすればよいですか。たとえば、次の場所で剪定します0.4
  3. これらのクラスターを (プルーニング後に) ファイルに書き込む方法

私のpythonコード:

import scipy
import pylab
import scipy.cluster.hierarchy as sch
import numpy as np

D = np.genfromtxt('LtoR.txt', dtype=None)
def llf(id):
    return str(id)
fig = pylab.figure(figsize=(10,10))
Y = sch.linkage(D, method='single')
Z1 = sch.dendrogram(Y,leaf_label_func=llf,leaf_rotation=90)
fig.show()
fig.savefig('dendrogram.png')

デンドログラム: ここに画像の説明を入力

ありがとうございました。

4

3 に答える 3

2

1.fig.gca().set_ylim(-0.4,1.2)ここでgca()現在のaxesオブジェクトが返されるので、名前を付けることができます

ax=fig.gca()
ax.set_ylim(-0.4,ax.get_ylim()[1])
于 2012-03-14T19:33:17.823 に答える
0
  1. fclusterを使用して樹状図を刈り込み、クラスターを取得できます。0.4 の距離で剪定するには:

    clusters = sch.fcluster(Y,t = 0.4,criterion = 'distance')

  2. 結果の配列 ( clusters) には、データ内のすべての観測のクラスター ラベルが含まれます。numpy.savetxtを使用して配列を書き込むことができます:

    np.savetxt('clusters.txt', clusters, delimiter=',')

于 2015-05-19T17:25:05.750 に答える
0

軸があるため、境界線が表示されます。したがって、次のコマンドを使用して境界線を削除できます。

fig = plt.figure(figsize=(10, 8))
ax2 = fig.add_axes([0.3, 0.71, 0.6, 0.2])
Y = sch.linkage(D, method='ward')
Z2 = sch.dendrogram(Y)
ax2.set_xticks([])
ax2.set_yticks([])
ax2.axis('off')

ax.axis('off')境界線を非表示にします。

于 2017-08-04T15:24:47.937 に答える