Python 数据集中列之间的K-均值聚类

Python 数据集中列之间的K-均值聚类,python,scikit-learn,cluster-analysis,k-means,Python,Scikit Learn,Cluster Analysis,K Means,我正在尝试对我拥有的熊猫数据集执行k-means聚类 数据集如下所示: Index A B C D E 01-01.2000 01:00:00 1 1 1 1 2 01-01-2000 02:00:00 0 1 2 3 0.68 01-01-2000 03:00:00 0.58 2 4 0 0.72 索引列按小时计算持续1年,我总共有33列 我想做的是,我想在列之间执

我正在尝试对我拥有的熊猫数据集执行k-means聚类

数据集如下所示:

Index        A    B    C    D    E
01-01.2000
01:00:00     1    1    1    1    2
01-01-2000
02:00:00     0    1    2    3    0.68
01-01-2000
03:00:00     0.58 2    4    0    0.72
索引列按小时计算持续1年,我总共有33列

我想做的是,我想在列之间执行kmeans聚类分析,它将每一行作为一个时间序列。我期望输出如下:

import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
kmeans = KMeans(n_clusters=7)
kmeans = kmeans.fit(X)
labels = kmeans.predict(X)
Centers = kmeans.cluster_centers_
C = Centers
X=X.values
fig = plt.figure()
ax = fig.add_axes([0.1, 0.1, 0.8, 0.8])
ax.plot(X[:, 0], X[:, 1], X[:, 2],X[:, 3],...till 33,marker='o')
ax.plot(C[:, 0], C[:, 1], C[:, 2],C[:, 3],...till 33, marker='o')
第1组:A、D、G列

第2组:B、C、E列

第3组:第I J K列

共有7个集群

我写的代码如下:

import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
kmeans = KMeans(n_clusters=7)
kmeans = kmeans.fit(X)
labels = kmeans.predict(X)
Centers = kmeans.cluster_centers_
C = Centers
X=X.values
fig = plt.figure()
ax = fig.add_axes([0.1, 0.1, 0.8, 0.8])
ax.plot(X[:, 0], X[:, 1], X[:, 2],X[:, 3],...till 33,marker='o')
ax.plot(C[:, 0], C[:, 1], C[:, 2],C[:, 3],...till 33, marker='o')
然而,在运行上述代码之后,我得到了下面的图表,这不是我想要生成的输出,因为它没有显示总共7个集群

我注意到在'labels'变量中,我总共有8760行和1列,这表明我的方法考虑了每一行的独立性,而不是将行作为时间序列逐列进行聚类


通过k-means聚类,我是否可以得到我想要的结果?或者我应该考虑其他聚类方法吗?< /p> x是如何定义的?X应该是一个形状数组(n_样本,n_特征)。您可能想在之前转置X,因为X的列似乎对应于您的不同时间序列。@Kefeng91,我尝试过这种方法,但是这样C矩阵的大小为7到8760。我认为这没有意义,因为将有7个集群,因此有7个中心