群集组时出现数据帧错误

时间:2015-11-12 16:51:04

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

我对python中的聚类有点新意。我试图聚集一些数据。我试图将人们分组在他们的工作上。有几个代理人共享类似的工作,我试图用k方法将它们组合在一起。

以下是我的数据

from flask import Flask, session
from flask import session
from functools import wraps

app = Flask(__name__)

def check_login(function):
    @wraps(function)
    def decorated_function(*args, **kwargs):
        if 'logged_in' in session:
            return function(*args, **kwargs)
        return 'You are NOT logged in. Please log in to continue'
    return decorated_function()

@app.route('/')
def default_route():
    return 'This is the default page.'

@app.route('/page1')
@check_login
def page_one():
    return 'This is page1.'

app.secret_key = 'Youwillneverguess'

if __name__=='__main__':
    app.run(debug=True)

以下是数据类型:

        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]  

我认为这是来自我如何调用该数据,但我不知道如何解决这个问题。

1 个答案:

答案 0 :(得分:0)

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

将它与“string”或“integer”或“date”属性一起使用不会使有意义

k-means的概念最小二乘的概念。它确实试图最小化(x-mean)^2。但是这个等式只存在于数值值上,并且最小化正方形只有在连续时才有意义(不是如果它们是二进制的,那么它会减少计算)。

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