首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >两个不同矩阵中元素之间的欧几里得距离?

两个不同矩阵中元素之间的欧几里得距离?
EN

Stack Overflow用户
提问于 2016-08-05 20:54:27
回答 1查看 366关注 0票数 0

我正在尝试确定我的文档与其质心的欧几里德距离。有问题的两个数组(pointscenters)的维数满足scipy.spatial.distance.cdistXAXB维数要求,但我不知道为什么会得到下面的ValueError

我的代码:

代码语言:javascript
复制
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)

这是我得到的错误:

代码语言:javascript
复制
ValueError: setting an array element with a sequence.

摘自scipy.spatial.distance.cdist的文档:

代码语言:javascript
复制
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
...

我的Xcenters numpy数组肯定满足cdist的这些维数条件,对吧?我遗漏了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-05 21:19:11

你需要做的只是一个小改动:

代码语言:javascript
复制
cdist(X.toarray(),centers)

因为X是一个scipy.sparse.csr.csr_matrix类型的对象,所以它不会被scipy函数直接作为有效的输入。toarray()方法将其转换为有效的numpy数组

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38789757

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档