【问题标题】:Dataframe error when clustering groups聚类组时出现数据框错误
【发布时间】:2016-02-14 02:23:54
【问题描述】:

我对 python 中的集群有点陌生。我正在尝试对一些数据进行聚类。我正在尝试根据他们的工作编号对人们进行分组。有几个代理共享相似的工作编号,我正在尝试使用 k 方法将它们组合在一起。

这是我的数据的样子

        date    agentid     workgroup   direction   worknum
 0  2015-09-01  Adam            Claims   Inbound      1
 1  2015-09-01  Nathaniel       Claims   Inbound      1
 2  2015-09-01  Accorvia        -        Outbound     13
 3  2015-09-01  Jane-   -       Claims   Inbound      1
 4  2015-09-01  Jessica         Benefits Inbound      6

以下是数据类型:

 y.types
date          object
agentid       object
workgroup     object
direction     object
worknum      float64
dtype: object

这是我的聚类分析代码

##### cluster data into K=1..10 clusters #####
#K, KM, centroids,D_k,cIdx,dist,avgWithinSS = kmeans.run_kmeans(X,10)

K = range(1,10)

 # scipy.cluster.vq.kmeans
KM = [kmeans(y,k) for k in K] # apply kmeans 1 to 10
centroids = [cent for (cent,var) in KM]   # cluster centroids

D_k = [cdist(y, cent, 'euclidean') for cent in centroids]

cIdx = [np.argmin(D,axis=1) for D in D_k]
dist = [np.min(D,axis=1) for D in D_k]
avgWithinSS = [sum(d)/y.shape[0] for d in dist]  

这给我一个错误:

  AttributeError: 'DataFrame' object has no attribute 'dtype'

我认为这是来自我调用该数据的方式,但我不确定如何解决此问题。

【问题讨论】:

  • 您的数据看起来不适合聚类!你想要groupby吗?也许像y.groupby(by='worknum')
  • @atomh33ls 也许我需要更好地更改数据。我不想只是将技能编号组合在一起。理想情况下,我想根据共享的工作编号找出相似组中的人应该是什么。或者我只是误解了你的评论!

标签: python numpy scipy cluster-analysis k-means


【解决方案1】:

k-means 仅适用于数字(连续)属性

将它与“字符串”或“整数”或“日期”属性一起使用没有意义

k-means 的概念最小二乘。它实际上试图最小化(x-mean)^2。但是这个方程只存在于 numerical 值上,只有当它们是 连续 时,最小化平方才有意义(not 如果它们是二元的,那么它会减少数数)。

换句话说,k-means 不能用于您的数据集

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-21
    • 2021-06-17
    • 2016-10-18
    • 2017-02-14
    • 1970-01-01
    • 1970-01-01
    • 2019-08-14
    • 1970-01-01
    相关资源
    最近更新 更多