Tôi có cùng một vấn đề chính xác và chỉ dành một vài giờ cố gắng tìm t của anh ấy. Tôi không thể đảm bảo những gì tôi chia sẻ ở đây sẽ làm việc cho những người khác nhưng nó có thể có giá trị một shot.
- Tôi đã cố gắng cài đặt các gói
pydot
chính thức nhưng tôi có Python 3 và đơn giản là chúng không hoạt động. Sau khi tìm thấy một ghi chú trong một chủ đề từ một trong nhiều trang web mà tôi đã lướt qua, tôi đã cài đặt this forked repository of pydot.
- Tôi đã truy cập graphviz.org và cài đặt phần mềm của họ trên máy tính Windows 7 của tôi. Nếu bạn không có Windows, hãy xem phần Tải xuống cho hệ thống của bạn.
- Sau khi cài đặt thành công, trong Environment Variables (
Control Panel\All Control Panel Items\System\Advanced system settings
> nhấp Environment Variables
nút> dưới System variables
tôi thấy biến path
> nhấp Edit...
> Tôi thêm ;C:\Program Files (x86)\Graphviz2.38\bin
đến cuối trong lĩnh vực Variable value:
.
- Để xác nhận bây giờ tôi có thể sử dụng
dot
lệnh trong dòng lệnh (Windows Command Processor), tôi gõ dot -V
mà trở dot - graphviz version 2.38.0 (20140413.2041)
.
trong đoạn mã dưới đây, hãy ghi nhớ rằng tôi đang đọc một dataframe
từ clipboard của tôi. Bạn có thể đọc nó từ tập tin hoặc whathaveyou.
Trong IPython Notebook:
import pandas as pd
import numpy as np
from sklearn import tree
import pydot
from IPython.display import Image
from sklearn.externals.six import StringIO
df = pd.read_clipboard()
X = df[df.columns[:-1]]
y = df[df.columns[-1]]
dtr = tree.DecisionTreeRegressor(max_depth=3)
dtr.fit(X, y)
dot_data = StringIO()
tree.export_graphviz(dtr, out_file=dot_data, feature_names=X.columns)
graph = pydot.graph_from_dot_data(dot_data.getvalue())
Image(graph.create_png())
Ngoài ra, nếu bạn không sử dụng IPython, bạn có thể tạo ra hình ảnh riêng của bạn từ dòng lệnh miễn là bạn đã cài đặt graphviz (bước 2 ở trên). Sử dụng cùng một mã ví dụ của tôi ở trên, bạn sử dụng dòng này sau khi lắp mô hình:
tree.export_graphviz(dtr.tree_, out_file='treepic.dot', feature_names=X.columns)
sau đó mở lên cửa sổ lệnh mà tập tin treepic.dot
là và nhập dòng lệnh sau:
dot -T png treepic.dot -o treepic.png
Một file .png nên được tạo bằng cây quyết định của bạn.
Bạn có hiển thị cho chúng tôi tất cả mã không? Tôi không thấy câu lệnh if rằng truy nguyên được chỉ ra. Ngoài ra, rõ ràng là phương thức startswith() dự kiến hoặc là một chuỗi là đầu vào "chuỗi" hoặc một chuỗi các chuỗi ("st", "st2", "st3"). Bạn đã truyền vào kiểu dữ liệu sai trong lời gọi phương thức startswith(). Hoặc bạn không sử dụng codec.BOM_UTF8 một cách chính xác, hoặc bạn phải chuyển nó thành chuỗi -> str (codecs.BOM_UTF8) – reticentroot