【发布时间】:2018-10-11 07:42:22
【问题描述】:
我有一个如下所示的 csv 文件
date mse
2018-02-11 14.34
2018-02-12 7.24
2018-02-13 4.5
2018-02-14 3.5
2018-02-16 12.67
2018-02-21 45.66
2018-02-22 15.33
2018-02-24 98.44
2018-02-26 23.55
2018-02-27 45.12
2018-02-28 78.44
2018-03-01 34.11
2018-03-05 23.33
2018-03-06 7.45
... ...
现在我想为 mse 值获取两个集群,以便我知道哪个值属于哪个集群及其平均值。
现在因为除了mse(我必须提供 X 和 Y)之外我没有任何其他值集,我想只使用 mse 值来获取 ak 表示集群。现在其他一组值,我将它作为与mse 值相同大小的范围传递。这就是我所做的
from sklearn.cluster import KMeans
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
df = pd.read_csv("generate_csv/all_data_device.csv", parse_dates=["date"])
f1 = df['mse'].values
# generate another list
f2 = list(range(0, len(f1)))
X = np.array(list(zip(f1, f2)))
kmeans = KMeans(n_clusters=2).fit(X)
labels = kmeans.predict(X)
# Centroid values
centroids = kmeans.cluster_centers_
#print(centroids)
fig = plt.figure()
ax = Axes3D(fig)
ax.scatter(X[:, 0], X[:, 1], c=labels)
ax.scatter(centroids[:, 0], centroids[:, 1], marker='*', c='#050505', s=1000)
plt.title('K Mean Classification')
plt.show()
我怎样才能只使用mse 值来获取 k 均值集群?我知道函数 'reshape()' 但不太确定如何使用它?
【问题讨论】:
标签: python-3.x pandas scikit-learn k-means