2016-08-05 15 views
0

ドキュメントのユークリッド距離をセントロイドから決定しようとしています。問題の2つのアレイ(pointsおよびcenters)の寸法はscipy.spatial.distance.cdistXAおよびXBの寸法要件を満たしていますが、なぜ私が以下を得ているのか分かりませんValueError2つの異なる行列の要素間のユークリッド距離?

マイコード:

import pandas as pd, numpy as np 
from scipy.spatial.distance import cdist 
from sklearn.feature_extraction.text import TfidfVectorizer 
from sklearn.cluster import KMeans 

corpus = pd.Series(["bye bye brutal good bye apple banana orange", "bye bye hello apple banana", "corn wheat apple banana goodbye cookie brutal", "fruit cake banana apple bye sweet sweet"]) 
X = vectorizer.fit_transform(corpus) 
model = Kmeans(n_clusters = 2) 
model.fit(X) 
centers = model.cluster_centroids_ 

cdist(X, centers) 

これは私が取得エラーです:

ValueError: setting an array element with a sequence. 

scipy.spatial.distance.cdistさんからのドキュメント:

Parameters: XA: ndarray 
    An Ma by n array of Ma original observations in an n-dimensional space 
      XB: ndarray 
    An Mb by n array of Mb original observations in an n-dimensional space 
... 

マイXcentersnumpy配列は確かにこれらを満たします012の次元条件、右私は何が欠けていますか?あなたがする必要がある

答えて

2

ほんの少しの変更:

cdist(X.toarray(),centers) 

Xは、それが直接scipyのダウンロード機能によって有効な入力として取られることはありませんタイプscipy.sparse.csr.csr_matrixのオブジェクトがあるので。 toarray()メソッドは、それを有効なnumpy配列に変換します

関連する問題