2013-05-01 6 views
2

"Machine Learning in Action"을 읽고 있습니다. 회귀 분석의 8 장, p.158에는 원본 데이터 점과 맞는 선을 그릴 코드가 거의 없습니다.matplotlib를 사용하여 파이썬에서 데이터 플로팅

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로 정의 된 매트릭스 객체입니다. 내가 파이썬 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' 

그러나 파이썬 2.7을 사용하여, 동일한 코드 클립이 잘 작동합니다. numpy가 2.7과 3.2 사이에 어떤 차이가 있습니까? 또는 matplotlib 라이브러리가 syntex를 2.7에서 Python 3으로 변경 했습니까?

+0

matplotlib는 2.7로 개발되었고 python3 버전은'2to3'을 통해 생성되므로 인터페이스가 변경되지 않습니다. 이 데이터를 실행할 수 있도록 일부 데이터를 추가 할 수 있습니까? – tacaswell

+0

'plot'이 여러분이 제공 한 인수를 어떻게 나누는 지 버그로 보입니다. 이것으로 github 문제를 열어야합니다. – tacaswell

+0

데이터 소스는 http://www.manning.com/pharrington/MLiA_SourceCode.zip에서 확인할 수 있습니다. – Peorth

답변

2

에 대한 Python 3 지원으로 인해 몇 가지 버그가 발생할 수 있습니다.

당신이 깨달은 것처럼, 파이썬 2.X에 대한 numpy 및 matplotlib 지원은 좋기 때문에 더 숨겨진 '기능'을 만나지 않으려 고한다면 나는 그것에 충실 할 것입니다.

관련 문제