Introduction to Machine Learning with Python/Python机器学习基础教程_代码修改与更新

邵研
2023-12-01

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,谢谢!

 类似资料: