AttributeError:'模块'对象没有属性' cm'

时间:2016-01-27 23:20:53

标签: python-2.7 matplotlib

我正在使用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 cmmatplotlib的属性。因此,我将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")

1 个答案:

答案 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)