sklearn MiniBatchKMeans 中的弃用警告

Posted

技术标签:

【中文标题】sklearn MiniBatchKMeans 中的弃用警告【英文标题】:DeprecationWarning in sklearn MiniBatchKMeans 【发布时间】:2016-08-21 21:39:57 【问题描述】:
vectors = model.syn0

n_clusters_kmeans = 20 # more for visualization 100 better for clustering

min_kmeans = MiniBatchKMeans(init='k-means++', n_clusters=n_clusters_kmeans, n_init=10)
min_kmeans.fit(vectors)

X_reduced = TruncatedSVD(n_components=50,  random_state=0).fit_transform(vectors)
X_embedded = TSNE(n_components=2, perplexity=40, verbose=2).fit_transform(X_reduced)

fig = plt.figure(figsize=(10, 10))
ax = plt.axes(frameon=False)
plt.setp(ax, xticks=(), yticks=())
plt.subplots_adjust(left=0.0, bottom=0.0, right=1.0, top=0.9,     wspace=0.0, hspace=0.0)
plt.scatter(X_embedded[:, 0], X_embedded[:, 1], c=None, marker="x")
plt.show()

我想绘制向量。我正在使用 sklearn.cluster MiniBatchKMeans。 上面的代码给了我以下弃用错误:

/usr/local/lib/python3.5/site-packages/sklearn/cluster/k_means_.py:1328:DeprecationWarning:此功能已弃用。请改为调用 randint(0, 99 + 1) 0, n_samples - 1, self.batch_size)

感谢任何建议。 谢谢

【问题讨论】:

尝试忽略警告并查看代码是否仍按预期工作。你可以这样做:import warningswarnings.filterwarnings("ignore", category=DeprecationWarning) 【参考方案1】:

这是一个已知问题,已为此合并修复。请参考gh:scikit-learn#6863。

据统计,下一个版本应该在 2016 年 10 月左右发布。在此之前有以下选项:

--> 抑制 如frist's answer on this question

中所述
import warnings
....
min_kmeans = MiniBatchKMeans(...)
with warnings.catch_warnings():
    warnings.simplefilter("ignore", category=DeprecationWarning)
    min_kmeans.fit(vectors)
# Rest part of the code

--> 从大师那里安装 scikit-learn:

pip install git+git://github.com/scikit-learn/scikit-learn.git

【讨论】:

【参考方案2】:

暂时禁止警告

warnings 模块的 python 文档中描述了抑制此警告的最佳选项。

在这种情况下,您可以使用 with 语句包装聚类器拟合方法,如下所示:

import warnings
....
min_kmeans = MiniBatchKMeans(...)
with warnings.catch_warnings():
    warnings.simplefilter("ignore")
    min_kmeans.fit(vectors)
# Rest part of the code

【讨论】:

以上是关于sklearn MiniBatchKMeans 中的弃用警告的主要内容,如果未能解决你的问题,请参考以下文章

在 sklearn 中持久化数据

k-means+python︱scikit-learn中的KMeans聚类实现( + MiniBatchKMeans)

有没有办法减少小批量 kmeans 的内存使用?

scikit-learn 中的 minibatch kmeans 是不是通过使用部分拟合进行增量学习?

sklearn中OneHotEncoder

k-means 算法