Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Machine learning 执行分层群集时出现内存错误_Machine Learning_Cluster Analysis_Hierarchical Clustering - Fatal编程技术网

Machine learning 执行分层群集时出现内存错误

Machine learning 执行分层群集时出现内存错误,machine-learning,cluster-analysis,hierarchical-clustering,Machine Learning,Cluster Analysis,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_

我有一个很大的数据集(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
dendrogram=sch.dendrogram(sch.linkage(X_minmax,method='ward'))
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
树状图=sch.树状图(sch.连锁(X_最小值,方法='ward'))
链接中第708行的文件“C:\Users\kashy\Anaconda3\envs\py36\lib\site packages\scipy\cluster\hierarchy.py”
y=距离.pdist(y,公制)
文件“C:\Users\kashy\Anaconda3\envs\py36\lib\site packages\scipy\space\distance.py”,第1877行,在pdist中
dm=np.empty((m*(m-1))//2,dtype=np.double)
记忆者
有人能解释一下到底是什么问题吗


提前感谢

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


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

问题是,
sch.linkage
的内存复杂性与原始观测值的数量成二次关系。当你有很多(207989)你应该考虑尝试更少的内存要求算法。嘿,MikhailBerlinkov。换句话说,你的意思是分层聚类不适合大数据集?不,我的意思是只有这个特定的算法是二次的。