I'm using Python2.7. This is a function from Udacity's Intro to Machine Learning course. When the function is called, a plot is shown. However, there are suppose to be colored regions shown too, and they are not shown.
When I run the script which calls this function, the figure opens. When I close the figure, I see this message:
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'
It seemed to me like cm
is an attribute of matplotlib
from matplotlib cm. Thus, I changed pl
to 'plt`. This gets rid of the error message, but the colored regions still do not show up in plot. Thus, I'm less convinced this is correct.
Why are the colored regions not showing up?
Here is the code for the function 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")
replace cmap=pl.cm.seismic
with cmap=plt.cm.seismic
replace plt.savefig("your_image.png")
with
figure = plt.gcf()
plt.show()
plt.draw()
figure.savefig("your_image.png", dpi=100)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With