标签: k-means

使用numpy计算矩阵距离

我正在尝试在 Python 中实现 K 均值算法(我知道有相应的库,但我想学习如何自己实现它。)这是我遇到问题的函数:

def AssignPoints(points, centroids):
    """
    Takes two arguments:
    points is a numpy array such that points.shape = m , n where m is number of examples,
    and n is number of dimensions.

    centroids is numpy array such that centroids.shape = k , n where k is number of centroids.
    k < m should hold.

    Returns:
    numpy array A such that A.shape = (m,) and A[i] is index of the centroid which points[i] is assigned to.
    """ …
Run Code Online (Sandbox Code Playgroud)

python numpy k-means

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

对一组图像和筛选描述符执行 kmeans

我正在尝试创建一个用于 CBIR 任务的密码本。一切正常,直到我尝试执行 kmeans,然后我有

Traceback (most recent call last):
File "path", line 36, in <module>
scipy.cluster.vq.kmeans(descriptors, k_or_guess=500, iter=20, thresh=1e-05)
File "path", line 513, in kmeans
No = obs.shape[0]
AttributeError: 'list' object has no attribute 'shape'
Run Code Online (Sandbox Code Playgroud)

如果我使用 kmeans 代替 scipy 函数

cv2.kmeans(descriptors, K=500, criteria=(cv2.TERM_CRITERIA_EPS | cv2.TERM_CRITERIA_MAX_ITER, 1, 10), attempts=1, flags=cv2.KMEANS_RANDOM_CENTERS)
Run Code Online (Sandbox Code Playgroud)

我有

Traceback (most recent call last):
File "path", line 35, in <module>
cv2.kmeans(descriptors, K=500, criteria=(cv2.TERM_CRITERIA_EPS | cv2.TERM_CRITERIA_MAX_ITER, 1,  10), attempts=1, flags=cv2.KMEANS_RANDOM_CENTERS)
TypeError: data is not a numpy array, neither a scalar …
Run Code Online (Sandbox Code Playgroud)

opencv scipy sift k-means python-2.7

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

使用 k 均值聚类时,我可以通过 calinski 和 hrabasz 验证来确定 k 吗?

我想使用 python 中 scikit 包中的 calinski 和 harabasz 验证自动选择 k(k 均值聚类)(metrics.calinski_harabaz_score)。

我循环遍历所有聚类范围以选择 calinski_harabaz_score 的最大值

    for kClusterCnt in range(2, 21) :
       value = metrics.calinski_harabaz_score(datasets.data, kmCls.labels_)
Run Code Online (Sandbox Code Playgroud)

仅使用该方法是否有任何缺陷或错误?

python cluster-analysis k-means scikit-learn

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

在 R 中使用什么包进行 Kmeans 预测?

似乎“SwarmSVM”包曾经有一个 kmeans.predict 函数,但现在没有了。

我想将数据帧划分为训练+测试子集以训练模型然后对其进行测试。我目前只能使用 'kmeans' 函数来创建集群,但我无法弄清楚使用哪些函数/包来训练和测试模型。

r cluster-analysis k-means

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

python 中的加权 k 均值

在阅读了这篇关于 k 均值聚类中的重复值的文章后,我意识到我不能简单地使用唯一点进行聚类。

\n\n

https://stats.stackexchange.com/questions/152808/do-i-need-to-remove-duplicate-objects-for-cluster-analysis-of-objects

\n\n

我有超过 10000000 点,虽然只有 8000 个独特的点。因此,我最初认为为了加快速度,我\xe2\x80\x99d 仅使用唯一点。看来这是一个坏主意。

\n\n

为了减少计算时间,这篇文章建议为每个点添加权重。这在Python中如何实现呢?

\n

python k-means

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

使用 word2vec 和 Kmeans 进行聚类

我正在尝试使用 word2vec 和 Kmeans 进行聚类,但它不起作用。

这是我的部分数据:

demain fera chaud à paris pas marseille
mauvais exemple ce n est pas un cliché mais il faut comprendre pourquoi aussi
il y a plus de travail à Paris c est d ailleurs pour cette raison qu autant de gens",
mais s il y a plus de travail, il y a aussi plus de concurrence
s agglutinent autour de la capitale
Run Code Online (Sandbox Code Playgroud)

脚本:

import nltk
import pandas
import pprint
import numpy as np
import pandas …
Run Code Online (Sandbox Code Playgroud)

python cluster-analysis k-means python-3.x word2vec

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

R中kmean的创建预测函数

我想创建预测函数来预测观察属于哪个集群

data(iris)
 mydata=iris
m=mydata[1:4]
train=head(m,100)
xNew=head(m,10)


rownames(train)<-1:nrow(train)

norm_eucl=function(train)
  train/apply(train,1,function(x)sum(x^2)^.5)
m_norm=norm_eucl(train)


result=kmeans(m_norm,3,30)

predict.kmean <- function(cluster, newdata)
{
  simMat <- m_norm(rbind(cluster, newdata),
              sel=(1:nrow(newdata)) + nrow(cluster))[1:nrow(cluster), ]
  unname(apply(simMat, 2, which.max))
}

## assign new data samples to exemplars
predict.kmean(m_norm, x[result$cluster, ], xNew)
Run Code Online (Sandbox Code Playgroud)

当我收到错误后

Error in predict.kmean(m_norm, x[result$cluster, ], xNew) : 
  unused argument (xNew)
Run Code Online (Sandbox Code Playgroud)

我知道我正在做一些错误的功能,因为我只是在学习这样做,但我不明白到底在哪里。

确实我想采用 apcluster 的类似功能(我见过类似的主题,但是针对 apcluster)

predict.apcluster <- function(s, exemplars, newdata)
{
  simMat <- s(rbind(exemplars, newdata),
              sel=(1:nrow(newdata)) + nrow(exemplars))[1:nrow(exemplars), ]
  unname(apply(simMat, 2, which.max))
}

## assign new data samples to exemplars …
Run Code Online (Sandbox Code Playgroud)

r k-means

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

具有多处理功能的 Sklearn kmeans

我无法理解 n_jobs 是如何工作的:

data, labels = sklearn.datasets.make_blobs(n_samples=1000, n_features=416, centers=20)
k_means = sklearn.cluster.KMeans(n_clusters=10, max_iter=3, n_jobs=1).fit(data)
Run Code Online (Sandbox Code Playgroud)

运行时间不到 1 秒

当 n_jobs = 2 时,它的运行量几乎是原来的两倍

n_jobs = 8,它太长了,在我的电脑上永远不会结束......(我有8个核心)

我对并行化的工作原理有什么不明白的地方吗?

python parallel-processing k-means scikit-learn

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

tslearn.clustering.TimeSeriesKMeans 与 sklearn.cluster.KMeans

如果我不使用 DTW 作为距离度量,那么 tslearn.clustering.TimeSeriesKMeans 和 sklearn.cluster.KMeans 是否相等?

如果不是,有人可以告诉我这两个软件包之间的主要区别是什么?

python cluster-analysis machine-learning time-series k-means

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

ImportError:无法从“sklearn.cluster._kmeans”导入名称“_init_centroids”

我正在使用 python 3.8.8,Tensorflow-gpu:2.4.1,scikit-learn 的版本是 0.24.2。

使用旧版本我没有这个问题,但我必须升级我的 python 和tensorflow才能在gpu上运行我的代码。错误是

from sklearn.cluster._kmeans import _init_centroids
ImportError: cannot import name '_init_centroids' from 'sklearn.cluster._kmeans' 
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题?

python k-means scikit-learn

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