【问题标题】:How can i apply kmeans?我如何申请kmeans?
【发布时间】:2020-10-12 21:37:44
【问题描述】:

当我尝试这个时,我遇到了错误; ValueError: n_samples=6 应该 >= n_clusters=7

import numpy as np
import matplotlib.pyplot as plt

X=np.array([1,3,8,10,16,25])
X=X.reshape(-1,1)
from sklearn.cluster import KMeans

kmeans= KMeans(n_clusters=3,init='k-means++')
kmeans.fit(X)

print(kmeans.cluster_centers_)

results=[]
for i in range(1,10):
    kmeans=KMeans(n_clusters=i,init='k-means++',random_state=123)
    kmeans.fit(X)
    results.append(kmeans.inertia_)

【问题讨论】:

标签: python data-science data-mining


【解决方案1】:

您有 7 个数据点,不能容纳超过 7 个集群。您试图将 7 个人分成 8 组,因此出现错误。

检查一下

for i in range(1,10):
    kmeans=KMeans(n_clusters=i,init='k-means++',random_state=123)

i==8 时会报错。

【讨论】:

    【解决方案2】:

    您非常接近并且 99% 在那里。不错的工作。您只是在数据中没有足够的不同值,仅此而已:

    import numpy as np
    import matplotlib.pyplot as plt
    
    X=np.array([1,3,8,10,16,25,1,3,8,10,16,25,44,55,66,77,88,99,12,13,14,15])
    X=X.reshape(-1,1)
    from sklearn.cluster import KMeans
    
    kmeans= KMeans(n_clusters=3,init='k-means++')
    kmeans.fit(X)
    
    print(kmeans.cluster_centers_)
    
    results=[]
    for i in range(1,10):
        kmeans=KMeans(n_clusters=i,init='k-means++',random_state=123)
        kmeans.fit(X)
        results.append(kmeans.inertia_)
    

    在 Python 3.7.3 的 PyCharm 中为我生成此输出:

    [[88.  ]
     [11.25]
     [55.  ]]
    
    Process finished with exit code 0
    

    【讨论】:

      【解决方案3】:

      考虑的例子是一个有 6 个点的一维数组。但是,您希望将 K 聚类到 10,然后增加 X 中的数据点数量或将范围设置为 X 的长度。

      X=np.array([1,3,8,10,16,25])
      X=X.reshape(-1,1)
      X.shape
      (6, 1)
      

      到,

      X = np.linspace(1, 10, 50)
      X=X.reshape(-1,1)
      X.shape
      (50, 1)
      

      【讨论】:

        猜你喜欢
        • 2017-04-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多