首页 > 解决方案 > ValueError:无法将大小为 2070 的序列复制到维度为 2 的数组轴

问题描述

尝试执行 k 意味着通过将多个 csv 文件附加到时间序列数据来进行聚类。但低于错误 104 {2070}

71 公里内的 ValueError Traceback(最近一次通话最后一次)= TimeSeriesKMeans(n_clusters=cluster_count, metric="dtw") 72 ---> 73 个标签 = km.fit_predict(mySeries)

~\anaconda3\lib\site-packages\tslearn\clustering\kmeans.py in fit_predict(self, X, y) 810 每个样本所属集群的索引。811 """ --> 812 X = check_array(X, allow_nd=True, force_all_finite='allow-nan') 813 return self.fit(X, y).labels_814

~\anaconda3\lib\site-packages\sklearn\utils\validation.py in check_array(array, accept_sparse, accept_large_sparse, dtype, order, copy, force_all_finite, ensure_2d, allow_nd, ensure_min_samples, ensure_min_features, warn_on_dtype, estimator) 529 数组 = 数组.astype(dtype, cast="unsafe", copy=False) 530 else: --> 531 array = np.asarray(array, order=order, dtype=dtype) 532 除了 ComplexWarning: 533 raise ValueError("Complex data not支持\n"

~\AppData\Roaming\Python\Python37\site-packages\numpy\core_asarray.py in asarray(a, dtype, order) 83 84 """ ---> 85 return array(a, dtype, copy=False, order =订购)86 87

ValueError:无法将大小为 2070 的序列复制到维度为 2 的数组轴

我的代码是:

for filename in os.listdir(directory):
    if filename.endswith(".csv"):
        df = pd.read_csv(directory+filename)
mySeries.append(df)
        namesofMySeries.append(filename[:-2])
print(len(mySeries))
series_lengths = {len(series) for series in mySeries}
print(series_lengths)
cluster_count = math.ceil(math.sqrt(len(mySeries))) 

km = TimeSeriesKMeans(n_clusters=cluster_count, metric="dtw")

labels = km.fit_predict(mySeries)

标签: pythonpandasnumpyappendseries

解决方案


似乎您有多维数组,通过查看错误消息,您可以打印数据框头和数据框的形状吗?变量 mySeries 也是数据框列表吗?因为这可能是问题所在,您可能需要先连接该列表,如果所有 csvs 文件共享相同的模式结构,您可以轻松地执行以下操作:\

final_df = pd.concat(mySeries)

推荐阅读