Python 3.x PythonKmeans值错误

Python 3.x PythonKmeans值错误,python-3.x,pandas,scikit-learn,Python 3.x,Pandas,Scikit Learn,我正在尝试将一个pandas数据帧传递给sklearn包的kmeans算法。dataframe有一个日期索引,有52个日期(每周一个),列是不同的文章。列值是相应周的销售数量。为了更好地计算,我计算了百分比变化,结果如下: ARTICLE 47070868 489070875 29470899 99070943 \ DATE

我正在尝试将一个pandas数据帧传递给sklearn包的kmeans算法。dataframe有一个日期索引,有52个日期(每周一个),列是不同的文章。列值是相应周的销售数量。为了更好地计算,我计算了百分比变化,结果如下:

ARTICLE         47070868       489070875       29470899       99070943       \
DATE                                                                     
2017-01-02       0.000000       0.000000       0.000000       0.000000   
2017-01-09      -0.015625      -0.074928      -0.083333       0.230769   
2017-01-16       0.232804       0.007788       0.284091       0.062500   
2017-01-23       0.051502       0.174652       0.011799       0.117647   
2017-01-30       0.200000      -0.082895       0.008746       0.807018   
2017-02-06       0.057823       0.040172      -0.020231      -0.411003   
2017-02-13       0.000000      -0.037241      -0.014749      -0.087912   
2017-02-20       0.125402       0.259312       0.218563       0.138554   
2017-02-27      -0.265714      -0.271900      -0.233415      -0.343915   
2017-03-06       0.470817       0.293750       0.448718       0.661290   
2017-03-13       0.002646       0.013285      -0.057522      -0.048544 
数据帧有52行和8753列。如果将数据帧传递给kmeans算法,则会出现以下错误:

ValueError:x和y必须具有相同的第一维度,但具有形状(52,)和(8753,)

代码如下:

kmeans = KMeans(n_clusters=3, random_state=0).fit(data_pct_change)
print(kmeans.labels_)
np.savetxt('log_sebastian2017.txt', kmeans.labels_, newline="\n")
for i, cluster_center in enumerate(kmeans.cluster_centers_):
        plp.plot(data_pct_change.index, cluster_center, label='Center {0}'.format(i))
plp.legend(loc='best')
plp.show()
尝试绘图时,会在循环中抛出错误。
如果我执行此代码:

kmeans = KMeans(n_clusters=3, random_state=0).fit(data_pct_change)
print(kmeans.labels_)
np.savetxt('log_sebastian2017.txt', kmeans.labels_, newline="\n")
for i, cluster_center in enumerate(kmeans.cluster_centers_):
        plp.plot(cluster_center, label='Center {0}'.format(i))
plp.legend(loc='best')
plp.show()
它工作正常,但x轴和y轴的比例不正确,它在x轴上从0到大约8700(可能是8753,列数),在y轴上从0到10000(这也是错误的,数据帧中的最大百分比变化是17,6)

我做错了什么?此外,生成的标签数量也是错误的(在这两种情况下,算法为
kmean.labels\uuu
打印长度为52的数组,但应为8573)


有人能帮我正确地进行聚类吗?对于kmeans来说,我的数据帧是否是错误的?

数据\u pct\u change是否与您上面描述的原始数据(52x8753数据帧)具有类似的结构?如果没有,如何预处理数据?如果是,您是否正在尝试将具有类似销售额的周进行分组?听起来有点不寻常。无论如何,考虑提供完整的代码和数据集,以便其他人可以复制这个问题并帮助您描述数据是DataApPCtx更改的一个轴。