[英]KMeans scatter plot with centroids on timeseries data frame
我正在处理包含 2 列的 Pandas 时间序列数据框:时间戳和增量。
下面是一个例子:
>> 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()
此代码返回以下错误:
索引错误:索引 1 超出轴 1 的范围,大小为 1
在这一行:
plt.scatter(km.cluster_centers_[:, 0], km.cluster_centers_[:, 1], c='red', marker='x')
如果我在没有错误的情况下运行代码,则正确绘制散点图。
我试图将时间戳转换为 float64 但没有成功。
有人可以帮我解决这个问题吗?
错误的原因是形状是[3, 1]。
一维有 3 个簇质心。 将第一个质心和第二个质心聚类绘制为 (x,y) 对是没有意义的。 因为此图中的所有质心都在 Y 轴上(因为 delta 在 Y 上)。 所以你必须绘制 (0, KMC1), (0, KMC2), (0, KMC3)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.