2.3.1样本数据集
--代码bug及修改意见
import matplotlib.pyplot as plt
import mglearn
X,y=mglearn.datasets.make_forge()
mglearn.discrete_scatter(X[:,0],X[:,1],y)
plt.legend(["class 0","class 1"],loc=4)
plt.xlabel("first feature")
plt.ylabel("second feature")
print(X.shape)
运行此段代码会出现错误。
查看错误原因: scipy.misc 不能导出 imread,于是上网查找scipy.misc官方文档中imread,发现最新版imread有更新。scipy库在1.0.0版本已经弃用imread这种表达,最新版改为imageio.imread。
错误原因解析:
因mglearn库需要from scipy.misc import imread,但是scipy库在1.0.0版本已经弃用imread这种表达,最新版改为imageio.imread。scipy.misc 不能导出 imread属于版本更新问题。
解决方案:
打开错误提示路径中的py源文件:plot_interactive_tree.py,
将其from scipy.misc import imread注释,并添加为最新版的imread导入方式。代码如下:
#from scipy.misc import imread
#imread is deprecated in SciPy 1.0.0, Use imageio.imread instead
from imageio import imread
保存后运行一次代码,这时候会出现报错。
Traceback (most recent call last):
File "F:\CS\Python\Lib\site-packages\mglearn\plot_interactive_tree.py", line 8, in <module>
from scipy.misc import imread
ImportError: cannot import name 'imread'
注意:
因为mglearn库中涉及相对方式的文件调用,即from .tools import discrete_scatter,不能单独运行该文件检查修改是否正确。应该在全局下进行调试。
正确方式是:在Jupyter Notebook(或测试终端)上调试。
运行后发现plot_interactive_tree.py文件中导入imread错误消失了,说明我们修改正确。
但是还有plot_animal_tree.py出现同样的错误提示。同理修改一下相应源代码。
最后运行Jupyter Notebook,便可绘制出正确的散点图。
有不清楚的欢迎留言,或者发邮件:864371493@qq.com,谢谢!