使用sklearn对单变量时间序列进行聚类

时间:2015-08-19 21:39:08

标签: python pandas machine-learning scikit-learn cluster-analysis

我有一个panda DataFrame,我希望为每个列进行聚类。我正在使用sklearn,这就是我所拥有的:

ValueError: n_samples=1 should be >= n_clusters=2

当我尝试运行它时,我有这个错误:{{1}}

我想知道问题是什么,因为我有更多的样本而不是簇的数量。任何帮助将不胜感激

1 个答案:

答案 0 :(得分:3)

K-Means聚类器需要一个2D数组,每一行都是一个数据点,也可以是一维的。在您的情况下,您必须将pandas列重塑为具有len(data)行和1列的矩阵。请参阅下面一个有效的示例:

from sklearn.cluster import KMeans
import pandas as pd

data = {'one': [1., 2., 3., 4., 3., 2., 1.], 'two': [4., 3., 2., 1., 2., 3., 4.]}
data = pd.DataFrame(data)

n_clusters = 2

for col in data.columns:
    kmeans = KMeans(n_clusters=n_clusters)
    X = data[col].reshape(-1, 1)
    kmeans.fit(X)
    print "{}: {}".format(col, kmeans.predict(X))