質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
コードレビュー

コードレビューは、ソフトウェア開発の一工程で、 ソースコードの検査を行い、開発工程で見過ごされた誤りを検出する事で、 ソフトウェア品質を高めるためのものです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

0回答

2254閲覧

ウォード法×ユークリッド距離によるクラスタリングを行うpythonプログラム

zip

総合スコア21

コードレビュー

コードレビューは、ソフトウェア開発の一工程で、 ソースコードの検査を行い、開発工程で見過ごされた誤りを検出する事で、 ソフトウェア品質を高めるためのものです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/05/15 05:21

ネット上から寄せ集めて下記のようなコードを作成しました。

python

1from scipy.cluster.hierarchy import dendrogram, linkage, fcluster 2import numpy as np 3 4def hierarchical_clustering(emb, threshold): 5 # 階層型クラスタリングの実施 6 # ウォード法 x ユークリッド距離 7 linkage_result = linkage(emb, method='ward', metric='euclidean') 8 # クラスタ分けするしきい値を決める 9 threshold_distance = threshold * np.max(linkage_result[:, 2]) 10 # クラスタリング結果の値を取得 11 clustered = fcluster(linkage_result, threshold_distance, criterion='distance') 12 print("end clustering.") 13 return linkage_result, threshold_distance, clustered 14 15def plot_dendrogram(linkage_result, doc_index, threshold): 16 # 階層型クラスタリングの可視化 17 plt.figure(facecolor='w', edgecolor='k') 18 dendrogram(linkage_result, labels=doc_index, color_threshold=threshold) 19 print("end plot.") 20 plt.savefig('hierarchy.png') 21 22def save_cluster(doc_index, clustered): 23 doc_cluster = np.array([doc_index, clustered]) 24 doc_cluster = doc_cluster.T 25 doc_cluster = doc_cluster.astype("int64") 26 doc_cluster = doc_cluster[np.argsort(doc_cluster[:,1])] 27 np.savetxt('cluster.csv', doc_cluster, delimiter=",", fmt="%.0f") 28 print("save cluster.") 29 30#事前に保存したDoc2Vec学習モデルを読み込み 31m = models.Doc2Vec.load('test.model') 32 33#ベクトルをリストに格納 34vectors_list=[m.docvecs[n] for n in range(len(m.docvecs))] 35 36#クラスタリング 37threshold = 0.4 38linkage_result, threshold, clustered = hierarchical_clustering(emb=vectors_list, threshold=threshold) 39plot_dendrogram(linkage_result=linkage_result, doc_index=list(range(2000)), threshold=threshold) 40save_cluster(list(range(2000)), clustered)

上記コードを実行した結果、下記のようなエラーが出力されました


ValueError Traceback (most recent call last)
<ipython-input-10-67000ab3edde> in <module>
39 plot_dendrogram(linkage_result=linkage_result, doc_index=list(range(2000)), threshold=threshold)
40 print(clustered)
---> 41 save_cluster(list(range(2000)), clustered)

<ipython-input-10-67000ab3edde> in save_cluster(doc_index, clustered)
23 doc_cluster = np.array([doc_index, clustered])
24 doc_cluster = doc_cluster.T
---> 25 doc_cluster = doc_cluster.astype("int64")
26 doc_cluster = doc_cluster[np.argsort(doc_cluster[:,1])]
27 np.savetxt('cluster.csv', doc_cluster, delimiter=",", fmt="%.0f")

ValueError: setting an array element with a sequence.

エラーの解消方法を教えてください

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

meg_

2020/05/15 08:34

エラー発生行(doc_cluster = doc_cluster.astype("int64"))の前に print(doc_cluster) を入れると何が表示されますか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問