相关疑难解决方法(0)

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

计算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万
查看次数

Kmeans不知道集群的数量?

我试图在一组高维数据点(大约50维)上应用k-means,并且想知道是否有任何实现找到最佳簇数.

我记得在某处读取算法通常这样做的方式是使群集间距离最大化并且群集内距离最小化但我不记得我在哪里看到它.如果有人可以指出我讨论这个的任何资源,那将是很棒的.我目前正在使用SciPy进行k-means,但任何相关的库都可以.

如果有其他方法可以实现相同或更好的算法,请告诉我.

python machine-learning data-mining k-means

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

K表示当肘部曲线是平滑曲线时找到肘部

我试图使用以下代码绘制k的肘部:

load CSDmat %mydata
for k = 2:20
    opts = statset('MaxIter', 500, 'Display', 'off');
    [IDX1,C1,sumd1,D1] = kmeans(CSDmat,k,'Replicates',5,'options',opts,'distance','correlation');% kmeans matlab
    [yy,ii] = min(D1');      %% assign points to nearest center

    distort = 0;
    distort_across = 0;
    clear clusts;
    for nn=1:k
        I = find(ii==nn);       %% indices of points in cluster nn
        J = find(ii~=nn);       %% indices of points not in cluster nn
        clusts{nn} = I;         %% save into clusts cell array
        if (length(I)>0)
            mu(nn,:) = mean(CSDmat(I,:));               %% update mean
            %% Compute within class …
Run Code Online (Sandbox Code Playgroud)

matlab cluster-analysis variance k-means

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

ValueError:标签数为1。使用Silhouette_score时,有效值为2到n_samples-1(包括1)

silhouette score当我找到要创建的最佳群集数时,我正在尝试进行计算,但是出现错误消息:

ValueError: Number of labels is 1. Valid values are 2 to n_samples - 1 (inclusive)
Run Code Online (Sandbox Code Playgroud)

我无法理解其原因。这是我用来聚类和计算的代码silhouette score

我阅读了包含要聚类的文本的csv,并K-Meansn聚类值上运行。我收到此错误的原因可能是什么?

  #Create cluster using K-Means
#Only creates graph
import matplotlib
#matplotlib.use('Agg')
import re
import os
import nltk, math, codecs
import csv
from nltk.corpus import stopwords
from gensim.models import Doc2Vec
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt
import pandas as pd
from sklearn.metrics import silhouette_score

model_name = checkpoint_save_path
loaded_model = Doc2Vec.load(model_name)

#Load the test …
Run Code Online (Sandbox Code Playgroud)

python machine-learning k-means pandas scikit-learn

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

如何在K ​​ - Means算法中优化K.

可能重复:
使用k-means聚类时如何确定k?

如果我不知道数据,我怎么能最初选择K?

有人可以帮我选择K.

谢谢纳文

data-mining k-means

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

K均值算法

可能的重复:
如何在 K 均值算法中优化 K
使用 k 均值聚类时如何确定 k?

根据统计指标,我们可以决定 K。如标准差、均值、方差等,或者

有没有简单的方法来选择K-means算法中的K?

预先感谢纳文

cluster-analysis machine-learning data-mining k-means

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