我正在使用Python2.7。这是Udacity的Intro to Machine Learning课程的功能。调用该函数时,将显示一个图。但是,也可以假设是彩色区域,并且没有显示它们。
当我运行调用此函数的脚本时,该图打开。当我关闭图时,我看到了这条消息:
Traceback (most recent call last):
File "your_algorithm.py", line 45, in <module>
prettyPicture(clf, features_test, labels_test)
File "e:\Projects\Udacity\Intro to Machine Learning\ud120-projects\choose_your_own\class_vis.py", line 22, in prettyPicture
plt.pcolormesh(xx, yy, Z, cmap=pl.cm.seismic)
AttributeError: 'module' object has no attribute 'cm'
在我看来cm
是来自matplotlib cm的matplotlib
的属性。因此,我将pl
更改为&#39; plt`。这消除了错误消息,但彩色区域仍未显示在绘图中。因此,我不太相信这是正确的。
为什么彩色区域没有出现?
以下是函数prettyPicture的代码:
import numpy as np
import matplotlib.pyplot as plt
import pylab as pl
def prettyPicture(clf, X_test, y_test):
x_min = 0.0; x_max = 1.0
y_min = 0.0; y_max = 1.0
# Plot the decision boundary. For that, we will assign a color to each
# point in the mesh [x_min, m_max]x[y_min, y_max].
h = .01 # step size in the mesh
xx, yy = np.meshgrid(np.arange(x_min, x_max, h), np.arange(y_min, y_max, h))
Z = clf.predict(np.c_[xx.ravel(), yy.ravel()])
# Put the result into a color plot
Z = Z.reshape(xx.shape)
plt.xlim(xx.min(), xx.max())
plt.ylim(yy.min(), yy.max())
plt.pcolormesh(xx, yy, Z, cmap=pl.cm.seismic)
# Plot also the test points
grade_sig = [X_test[ii][0] for ii in range(0, len(X_test)) if y_test[ii]==0]
bumpy_sig = [X_test[ii][1] for ii in range(0, len(X_test)) if y_test[ii]==0]
grade_bkg = [X_test[ii][0] for ii in range(0, len(X_test)) if y_test[ii]==1]
bumpy_bkg = [X_test[ii][1] for ii in range(0, len(X_test)) if y_test[ii]==1]
plt.scatter(grade_sig, bumpy_sig, color = "b", label="fast")
plt.scatter(grade_bkg, bumpy_bkg, color = "r", label="slow")
plt.legend()
plt.xlabel("bumpiness")
plt.ylabel("grade")
plt.savefig("test.png")
答案 0 :(得分:4)
将cmap=pl.cm.seismic
替换为cmap=plt.cm.seismic
用
替换plt.savefig("your_image.png")
figure = plt.gcf()
plt.show()
plt.draw()
figure.savefig("your_image.png", dpi=100)