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 warnings
warnings.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 中的弃用警告的主要内容,如果未能解决你的问题,请参考以下文章
k-means+python︱scikit-learn中的KMeans聚类实现( + MiniBatchKMeans)