mpld3显示到html出现的问题

2018-03-07  本文已影响0人  躁动思维

最近在用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

好了,就到这里

上一篇下一篇

猜你喜欢

热点阅读