我正在处理一个熊猫时间序列数据帧,该数据帧包含2列:时间戳记和增量。
下面是一个示例:
>> df.head()
timestamp delta
0 2016-07-30 00:05:00 0.0
1 2016-07-30 00:10:00 4265.0
2 2016-07-30 00:15:00 4568.0
3 2016-07-30 00:20:00 5857.0
4 2016-07-30 00:25:00 3847.0
时间戳包含字符串和增量float64。
我正在尝试运行KMeans(sklearn)并绘制(使用matplotlib)具有点和相对质心的散点图。
我的代码如下:
delta = df['delta'].values
delta = delta.reshape(-1, 1)
timestamp = df['timestamp'].values
km = KMeans(n_clusters=3, random_state=0)
km.fit(delta)
km.predict(delta)
plt.scatter(timestamp, delta, c=km.labels_)
plt.scatter(km.cluster_centers_[:, 0], km.cluster_centers_[:, 1], c='red', marker='x')
plt.show()
此代码返回以下错误:
IndexError:索引1超出了尺寸1的轴1的范围
在这一行:
plt.scatter(km.cluster_centers_[:, 0], km.cluster_centers_[:, 1], c='red', marker='x')
如果我不带错误地运行代码,则散点图将正确绘制。
我试图将时间戳转换为float64,但没有成功。
有人可以帮助我解决这个问题吗?
答案 0 :(得分:1)
错误原因是形状为[3,1]。
一维中有3个簇质心。将第一个质心和第二个质心聚类为(x,y)对是没有意义的。因为此图中的所有质心都在Y轴上(因为增量在Y上)。因此,您必须绘制(0,KMC1),(0,KMC2),(0,KMC3)。