使用 sklearn 聚类单变量时间序列
Clustering uni-variate Time series using sklearn
我有一个熊猫 DataFrame,我想从中对每一列进行聚类。我正在使用 sklearn,这就是我所拥有的:
data= pd.read_csv("data.csv")
data=pd.DataFrame(data)
data=data.set_index("Time")
#print(data)
cluster_numbers=2
list_of_cluster=[]
for k,v in data.iteritems():
temp=KMeans(n_clusters=cluster_numbers)
temp.fit(data[k])
print(k)
print("predicted",temp.predict(data[k]))
list_of_cluster.append(temp.predict(data[k]))
当我尝试 运行 它时,我遇到了这个错误:ValueError: n_samples=1 should be >= n_clusters=2
我想知道问题出在哪里,因为我的样本多于簇数。任何帮助将不胜感激
K-Means 聚类器需要一个二维数组,每行一个数据点,也可以是一维的。在您的情况下,您必须将 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))
我有一个熊猫 DataFrame,我想从中对每一列进行聚类。我正在使用 sklearn,这就是我所拥有的:
data= pd.read_csv("data.csv")
data=pd.DataFrame(data)
data=data.set_index("Time")
#print(data)
cluster_numbers=2
list_of_cluster=[]
for k,v in data.iteritems():
temp=KMeans(n_clusters=cluster_numbers)
temp.fit(data[k])
print(k)
print("predicted",temp.predict(data[k]))
list_of_cluster.append(temp.predict(data[k]))
当我尝试 运行 它时,我遇到了这个错误:ValueError: n_samples=1 should be >= n_clusters=2
我想知道问题出在哪里,因为我的样本多于簇数。任何帮助将不胜感激
K-Means 聚类器需要一个二维数组,每行一个数据点,也可以是一维的。在您的情况下,您必须将 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))