【发布时间】:2013-05-01 09:23:26
【问题描述】:
我目前正在阅读“机器学习实战”。 在回归的第 8 章中, p.158 ,很少有代码可以将原始数据点和拟合线绘制在一起。
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(111)
ax.scatter(xMat[:,1].flatten().A[0] , yMat.T[:, 0].flatten().A[0])
xCopy = xMat.copy()
xCopy.sort(0)
yHat = xCopy*ws
ax.plot(xCopy[:,1], yHat)
plt.show()
xCopy 和 yHat 都是 numpy 定义的矩阵对象。
当我使用 Python 3.2 时,运行此代码会抛出错误:
Traceback (most recent call last):
File "F:\ML\AC\Regression.py", line 44, in <module>
ax.plot(xCopy[:,1], yHat)
File "C:\Python32\lib\site-packages\matplotlib\axes.py", line 3998, in plot
for line in self._get_lines(*args, **kwargs):
File "C:\Python32\lib\site-packages\matplotlib\axes.py", line 332, in _grab_next_args
for seg in self._plot_args(remaining, kwargs):
File "C:\Python32\lib\site-packages\matplotlib\axes.py", line 291, in _plot_args
linestyle, marker, color = _process_plot_format(tup[-1])
File "C:\Python32\lib\site-packages\matplotlib\axes.py", line 99, in _process_plot_format
if fmt.find('--')>=0:
AttributeError: 'matrix' object has no attribute 'find'
但是使用 Python 2.7,完全相同的代码片段可以正常工作。 2.7 和 3.2 的 numpy 有什么区别吗? 还是 matplotlib 库已将语法从 2.7 更改为 Python 3?
【问题讨论】:
-
matplotlib是2.7开发的,python3版本是通过
2to3生成的,所以界面不会变。您能否添加一些数据以使其可运行? -
它看起来像一个错误,
plot如何拆分你给它的参数。你应该用这个打开一个 github 问题。
标签: python python-3.x matplotlib plot