使用matplotlib

时间:2018-08-19 03:16:26

标签: python matplotlib

我正在用matplotlib绘制复杂分类器的决策面。目前,我正在使用具有一些硬编码大小的散点图,但这种“外观”正确。表面不是线性的,甚至不是连接的。确实需要逐点绘制。

g = np.mgrid[0:2:0.02, 0:10:0.1]
xx = np.vstack(map(np.ravel, g)).T

pred = clf.predict(xx)

plt.scatter(xx[:,0], xx[:,1], c=pred, s=4)

plt.show()

如果我的网格太“粗”,则该图上有空格。如果我的网格太“精细”,我的分类器将花费大量时间来执行预测。如果散点图的s参数太大,则斑点彼此重叠。是否有更好的方法用matplotlib填充任意区域?

注意这不是我正在使用的分类器,但是您可以使用它来测试上面的代码:

clf = sklearn.naive_bayes.GaussianNB()
x = np.array([[0.4,4],[0.6,7]])
y = np.array([0,1])
clf.fit(x,y)

例如:

enter image description here

填充中有“空格”。目前,我在反复试验中猜测网格g,大小s和图形大小之间的适当关系。是否有一个matplotlib函数,我可以据此提供一些要点,并且找出“空格”确实很聪明?

1 个答案:

答案 0 :(得分:0)

您应该仅绘制图像,或使用填充的contour plot。如果有

X, Y = np.mgrid[0:2:0.02, 0:10:0.1]

Z = pred.reshape(X)

只需将其绘制为

contourf(X, Y, Z)

有几种方法可以控制插值。您可以参考文档。请确保在文档末尾查看示例。