相关疑难解决方法(0)

使用k-means聚类时如何确定k?

我一直在研究k-means聚类,有一点不清楚你是如何选择k的值的.这只是一个反复试验的问题,还是有更多的问题?

cluster-analysis k-means

136
推荐指数
6
解决办法
11万
查看次数

Scipy稀疏...数组?

所以,我正在使用非常稀疏的numpy数组进行一些Kmeans分类 - 很多很多零.我想我会使用scipy的'稀疏'软件包来减少存储开销,但我对如何创建数组而不是矩阵有点困惑.

我已经完成了关于如何创建稀疏矩阵的教程:http: //www.scipy.org/SciPy_Tutorial#head-c60163f2fd2bab79edd94be43682414f18b90df7

为了模拟一个数组,我只是创建一个1xN矩阵,但正如你可能猜到的,Asp.dot(Bsp)不能正常工作,因为你不能将两个1xN矩阵相乘.我必须将每个数组转换为Nx1,这非常蹩脚,因为我会为每个点积计算做这个.

接下来,我尝试创建一个NxN矩阵,其中第1列==第1行(这样您可以将两个矩阵相乘,只需将左上角作为点积),但结果证明效率非常低.

我喜欢使用scipy的稀疏包作为numpy的数组()的神奇替代品,但到目前为止,我还不确定该怎么做.

有什么建议?

python numpy matrix scipy sparse-matrix

48
推荐指数
1
解决办法
3万
查看次数

Python k-means算法

我正在寻找k-means算法的Python实现,并带有示例来聚类和缓存我的坐标数据库.

python algorithm cluster-analysis k-means

46
推荐指数
5
解决办法
9万
查看次数

计算k均值的方差百分比?

维基百科页面上,描述了用于确定k均值中的聚类数量的肘方法.scipy的内置方法提供了一个实现,但我不确定我是否理解它们所称的失真是如何计算的.

更确切地说,如果您绘制由集群解释的方差百分比与集群数量的关系图,则第一个集群将添加大量信息(解释大量方差),但在某些时候边际增益将下降,从而给出一个角度.图形.

假设我的相关质心有以下几点,那么计算这个量度的好方法是什么?

points = numpy.array([[ 0,  0],
       [ 0,  1],
       [ 0, -1],
       [ 1,  0],
       [-1,  0],
       [ 9,  9],
       [ 9, 10],
       [ 9,  8],
       [10,  9],
       [10,  8]])

kmeans(pp,2)
(array([[9, 8],
   [0, 0]]), 0.9414213562373096)
Run Code Online (Sandbox Code Playgroud)

我特别考虑计算0.94 ..测量给出的点和质心.我不确定是否可以使用任何内置的scipy方法,或者我必须编写自己的方法.关于如何有效地为大量积分做这些的任何建议?

简而言之,我的问题(所有相关的)如下:

  • 给定距离矩阵和哪个点属于哪个聚类的映射,计算可用于绘制肘图的度量的好方法是什么?
  • 如果使用不同的距离函数(如余弦相似度),方法会如何变化?

编辑2:失真

from scipy.spatial.distance import cdist
D = cdist(points, centroids, 'euclidean')
sum(numpy.min(D, axis=1))
Run Code Online (Sandbox Code Playgroud)

第一组点的输出是准确的.但是,当我尝试不同的设置时:

>>> pp = numpy.array([[1,2], [2,1], [2,2], [1,3], [6,7], [6,5], [7,8], [8,8]])
>>> kmeans(pp, 2)
(array([[6, 7],
       [1, 2]]), 1.1330618877807475)
>>> …
Run Code Online (Sandbox Code Playgroud)

python statistics numpy cluster-analysis k-means

35
推荐指数
2
解决办法
4万
查看次数

Python与Numpy/Scipy与Pure C++进行大数据分析

在相对小的项目做的Python让我欣赏这种语言的动态类型性质(无需申报代码跟踪的类型),这往往使沿途更快,痛苦少的发展过程.但是,我觉得在更大的项目中,这实际上可能是一个障碍,因为代码运行速度比在C++中等效.但话又说回来,使用numpy的和/或SciPy的使用Python可以让你的代码作为一个本地C++程序(其中在C++代码有时会需要更长的时间来开发)一样跑得快.

我在阅读Justin Peel对线程" Python是否比C++更快,更轻? " 的评论后发布了这个问题,他说:"而且,那些谈论Python对于严重数字运算缓慢的人并没有使用Numpy和Scipy模块. Python是真正起飞在科学计算的这些日子.当然,速度来自使用用C或Fortran语言编写的库模块,但是这在我看来,一个脚本语言的美." 或者,正如·洛写关于Python的在同一线程上:"......既然管理内存对我来说,我没有做任何的内存管理,节约追逐核泄漏的时间." 我还考察了一个Python/numpy的/ C++相关的性能问题的" 标杆(蟒蛇与C++使用BLAS)和(numpy的) ",其中JF塞巴斯蒂安写道:"......这里是C之间和numpy的我的机器上没有区别++".

这两个线程让我想知道,对于使用Numpy/Scipy生成软件来分析"大数据"的Python程序员来说,知道C++是否有任何真正的优势,其中性能显然非常重要(还有代码可读性和开发)速度是必须的)?

注意:我对处理大量文本文件特别感兴趣.具有多列的100K-800K行的文本文件,其中Python可能需要花费五分钟来分析"仅"200K行的文件.

c++ python benchmarking numpy scipy

12
推荐指数
2
解决办法
1万
查看次数

Python相当于R的集群包中的daisy()

我有一个包含分类(名义和序数)和数字属性的数据集.我想使用这些混合属性在我的观察中计算(dis)相似性矩阵.使用R中集群包的daisy()函数,我可以很容易地获得如下的相异矩阵:

if(!require("cluster")) { install.packages("cluster");  require("cluster") }
data(flower)
as.matrix(daisy(flower, metric = "gower"))
Run Code Online (Sandbox Code Playgroud)

这使用gower度量来处理名义变量.是否有一个Python相当于daisy()R 中的函数?

或者也许任何其他模块函数允许使用Gower指标或类似的东西计算具有混合(名义,数字)属性的数据集的(dis)相似性矩阵?

python r similarity categorical-data r-daisy

12
推荐指数
2
解决办法
8489
查看次数

我们应该使用k-means ++而不是k-means吗?

k均值++算法有助于以下两个原始K-means算法的要点:

  1. 原始k-means算法在输入大小上具有超级多项式的最差情况运行时间,而k-means ++声称为O(log k).
  2. 与最佳聚类相比,所发现的近似可以产生关于目标函数的不太令人满意的结果.

但是k-means ++有什么缺点吗?从现在开始我们应该总是使用它而不是k-means吗?

algorithm comparison performance cluster-analysis k-means

10
推荐指数
2
解决办法
3842
查看次数

scikit-learn kmeans自定义距离

我希望使用kmeans算法对某些数据进行聚类,但是我想使用自定义距离函数。有什么办法可以更改scikit-learn使用的距离函数?

我还将选择一个不同的框架/模块,该框架/模块可以交换距离函数并可以并行计算kmeans(我想加快计算速度,这是scikit-learn的一个不错的功能)

有什么建议么?

python scikit-learn

5
推荐指数
1
解决办法
9353
查看次数

在Opencv和python中的K-means聚类:在mahalanobis距离中是否有任何聚类选项?

是否有任何选项可以在Mahalanobis中进行聚类,或者可以轻松地与Opencv一起使用

cv2.kmeans
Run Code Online (Sandbox Code Playgroud)

在python中的功能?

python opencv image-processing computer-vision

3
推荐指数
1
解决办法
743
查看次数

在python中具有L1距离的kmeans

给定一个 NxM 特征向量作为 numpy 矩阵。是否有任何例程可以使用 L1 距离(曼哈顿距离)通过 Kmeans 算法对其进行聚类?

python numpy k-means

2
推荐指数
1
解决办法
6795
查看次数

“scipy.sparse.issparse”如何工作?它总是返回“假”

scipy.sparse.issparse 在这篇文章中使用。

是否可以使用 scikit-learn K-Means Clustering 指定您自己的距离函数?

但是,我不知道它是如何工作的。我已经找到了文件,它是空的。 http://docs.scipy.org/doc/scipy/reference/generated/scipy.sparse.issparse.html

from scipy.sparse import issparse

issparse([0, 0, 0])
>> False

issparse([[1, 0, 0], [0, 0, 0]])
>> False
Run Code Online (Sandbox Code Playgroud)

它总是返回False。我怎样才能让它回来True

python scipy

2
推荐指数
1
解决办法
3214
查看次数