最近在用sklearn做数据聚类,用到了k-means算法,在使用mpld3把matplotlib显示到html上的时候出现了点问题,各种百度无果,还是用google吧。
问题是关于mpld3使用fig_to_html方法出现TypeError: array([1.]) is not JSON serializable错误的问题解决办法,一个大神把这个问题解决了,但现在官方版本没有发布解决的办法,只能手动给mpld3打补丁,方法如下
python -m pip install "git+https://github.com/javadba/mpld3@display_fix"
亲测有效
import numpy as np # 科学计算包
import matplotlib.pyplot as plt # python画图包
import mpld3
from sklearn.cluster import KMeans # 导入K-means算法包
from sklearn.datasets import make_blobs
from sklearn import metrics
from sklearn.datasets.samples_generator import make_blobs
fig = plt.figure()
X, y = make_blobs(n_samples=1000, n_features=2, centers=[[-1, -1], [0, 0], [1, 1], [2, 2]], cluster_std=[0.4, 0.2, 0.2, 0.2], random_state=9) # 生成测试数据
for index, k in enumerate((2, 3, 4, 5)):
plt.subplot(2, 2, index + 1)
y_pred = KMeans(n_clusters=k, random_state=9).fit_predict(X) # 预测值
score = metrics.calinski_harabaz_score(X, y_pred)
plt.scatter(X[:, 0], X[:, 1], c=y_pred, s=10, edgecolor='k')
plt.text(.99, .01, ('k=%d, score: %.2f' % (k, score)), # 文本注释,标注关键信息 transform=plt.gca().transAxes, size=10, horizontalalignment='right')
# plt.show()
html = mpld3.fig_to_html(fig)
plt.close()
return html
好了,就到这里
网友评论