在处理 KMeans 时如何避免内存泄漏,例如在此代码中,我试图找到在 KMean 聚类中使用的最佳 WCSS

Gro*_*mok 9 python k-means

wcss = []

for i in range(1,10):
    kmeans = KMeans(i)
    kmeans.fit(x_scaled)
    wcss_iter = kmeans.inertia_
    wcss.append(wcss_iter)
Run Code Online (Sandbox Code Playgroud)

当我运行代码时,我收到以下警告: C:\Users\grahv\anaconda3\lib\site-packages\sklearn\cluster_kmeans.py:881: UserWarning: KMeans isknown to have a memory Leak on Windows with MKL,当块数少于可用线程数。您可以通过设置环境变量 OMP_NUM_THREADS=1 来避免它。警告.警告(

Sha*_*yan 10

正如警告所说:

用户警告:众所周知,当块数少于可用线程时,KMeans 在使用 MKL 的Windows上会出现内存泄漏。您可以通过设置环境变量 OMP_NUM_THREADS=1 来避免它。

忽略这样的警告根本不是一个好的选择!所以最好还是努力解决这个问题。OMP_NUM_THREADS要在 Windows 10中设置环境变量1,您应该按照以下步骤操作:

  1. 敲击Windows Button键盘。
  2. 搜索“编辑系统环境变量
  3. 单击“环境变量...
  4. 在系统变量部分中,单击“新建...在此输入图像描述
  5. 在字段中填写合适的内容(如 sklearn 警告中提到的): 在此输入图像描述
  6. 单击“确定”并重新启动计算机

然后您可以尝试运行代码而不会收到警告。


whe*_*eat 9

您可以通过设置环境变量

import os
os.environ["OMP_NUM_THREADS"] = '1'
Run Code Online (Sandbox Code Playgroud)

导入 kmeans 之前


小智 4

我也收到同样的警告。我没有找到任何与此相关的内容。所以我用了

import warnings
warnings.filterwarnings('ignore')
Run Code Online (Sandbox Code Playgroud)

忽略警告。

  • 但这只是隐藏了警告,而OP的问题是如何避免实际的内存泄漏。 (2认同)