2015-05-08 32 views
5

Python benim için oldukça yeni.Python: NameError: 'dot_parser' genel adı tanımlı değil

"Python with Scikit'te Makine Öğrenimi" kitabının titanik makine öğrenimi örneğini çalıştırmaya çalışıyorum. Karar ağaçları ile yapılan sınıflandırmalar iyi çalışıyor (clf düzgün bir şekilde tanımlanıyor) ancak karar ağacını görselleştirmek istiyorsam (aşağıdaki kod parçacığına bakınız) aşağıdaki hata mesajını aldım (IPython'dan kopyalandı).

--------------------------------------------------------------------------- 
NameError         Traceback (most recent call last) 
<ipython-input-34-15b1b4a5d909> in <module>() 
     3 dot_data = StringIO.StringIO() 
     4 tree.export_graphviz(clf, out_file = dot_data, feature_names = ['PClass', 'AgeFill', 'Gender']) 
----> 5 graph = pydot.graph_from_dot_data(dot_data.getvalue()) 
     6 graph.write_png('titanic.png') 

C:\Users\885299\AppData\Local\Continuum\Anaconda32\lib\site-packages\pydot.pyc in graph_from_dot_data(data) 

    218  """ 
    219 
--> 220  return dot_parser.parse_dot_data(data) 
    221 
    222 
NameError: global name 'dot_parser' is not defined 

Birisi bana yardımcı olabilir mi?

Kod ben (kitap benzer) kullanıldı olduğunu pasajı:

import pydot, StringIO 

dot_data = StringIO.StringIO() 
tree.export_graphviz(clf, out_file = dot_data, feature_names = ['Class', 'Age', 'Gender']) 
graph = pydot.graph_from_dot_data(dot_data.getvalue()) 
graph.write_png('titanic.png') 

from IPython.core.display import Image 
Image(filename = 'titanic.png') 
+1

hoş geldiniz! İyi oluşturulmuş bir soruyu bir araya getirdiğiniz için teşekkür etmek istiyorum. "Biri bana yardım edebilir mi?" Gelecek gönderilerden, SO topluluğunun birçok üyesine bir kırmızı bayrak biraz olabilir. Aksi takdirde, bu katı bir soru gibi görünüyor. – amccormack

+0

"dot_parser" hangi pakette? Onu aldınız mı ("pydot" ve "StringIO" gibi) ithal ettiniz? –

cevap

0

github üzerinde related issue gibi görünen yoktur. Öneri, "pırasser kütüphanelerini kurup güncellemenizi" sağlamaktır. Ancak, eminim ki pyparsing kütüphanesini kastettiler.

Sen pyparsing kaldırmayı önerir ki ek bir related stackoverflow question

pip install -U pyparsing çalıştıran ve daha sonra pyparsing ve pydot yeniden yükleyerek pyparsing güncelleyebilirsiniz pip install pyparsing

çalıştırarak pyparsing yükleyebilirsiniz.

+0

Hızlı cevap için çok teşekkürler! –

+0

Sadece küçük bir soru: Windows PC'de, komut satırına pip install pyparsing yazmalı mıyım? Eğer öyleyse, hangi dizinde? –

+0

'pip', python sürüm 3.4'ten önce python ile yüklenmez. Pencerelerde 'pip 'nasıl kurulacağına dair harika bir [SO Post] (http://stackoverflow.com/a/12476379/228489). – amccormack

1

Python 3 kullanıyorsanız, pydot yerine pydotplus kullanmak benim için iyi çalıştı.

Here is the github repo

+0

Bu, teorik olarak bu soruya cevap verebilirken, [buradaki cevabın temel kısımlarını içerecek şekilde [// meta.stackoverflow.com/q/8259] tercih edilir) ve referans için bağlantı sağlar. – NathanOliver

0

aşağıdaki kullanılmış ve Python3 ile çalışma var. Pyparser 2.2.0, pydot ile uyumludur.

pip install pyparsing==2.2.0 
pip install pydot 

Bu yüklü pydot 1.2.3.

Önceden yüklenmiş pydot paketleriniz varsa, önce bunları pip uninstall pydot ile kaldırın ve yukarıdaki adımlarda olduğu gibi yeni bir yükleme yapın.

0

Mükemmel çözümler. Ubuntu 14.04'te de aynı sorun vardı. Sadece birkaç kelime: /usr/lib/python2.7/dist-packages de

kaldırmayı değil pydot, OS

ait

i ile Pip yükseltme çözüldü i pyparsing ve pydot kaldırmaya çalıştığınızda ben bir hata vardı sudo pip install --upgrade pip

ve ardından aşağıdaki komutları şunlardır: sudo -H pip uninstall pydot sudo -H pip uninstall pyparsing ve yeniden: Stack Exchange sudo -H pip install pyparsing sudo -H pip install pydot

İlgili konular