进行层次聚类时出现内存错误

Memory error while doing Hierarchical Clustering

我有一个大型数据集 (207989, 23),我现在正尝试仅在一列上应用层次聚类,以测试它是否适合我手头的任务。

我尝试过的:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn import preprocessing

data = pd.read_csv('gpmd.csv', header = 0)

X = data.loc[:, ['ContextID', 'BacksGas_Flow_sccm']]

min_max_scaler = preprocessing.MinMaxScaler()
X_minmax = min_max_scaler.fit_transform(X.values[:,[1]])

import scipy.cluster.hierarchy as sch
dendrogram = sch.dendrogram(sch.linkage(X_minmax, method = 'ward'))

执行此操作后,出现以下错误:

dendrogram = sch.dendrogram(sch.linkage(X_minmax, method = 'ward'))
Traceback (most recent call last):

  File "<ipython-input-4-429f42b68112>", line 1, in <module>
    dendrogram = sch.dendrogram(sch.linkage(X_minmax, method = 'ward'))

  File "C:\Users\kashy\Anaconda3\envs\py36\lib\site-packages\scipy\cluster\hierarchy.py", line 708, in linkage
    y = distance.pdist(y, metric)

  File "C:\Users\kashy\Anaconda3\envs\py36\lib\site-packages\scipy\spatial\distance.py", line 1877, in pdist
    dm = np.empty((m * (m - 1)) // 2, dtype=np.double)

MemoryError

谁能解释一下这里到底是什么问题?

提前致谢

大多数变体中的层次聚类需要 O(n²) 内存。

因此,大多数实现将在大约 65535 个实例时失败,当它们达到 32 位标记时(有些可能已经在 32k 时失败)。但只需计算一下:双精度 n * n * 8 个字节:您需要多少内存?