đây là câu hỏi đầu tiên tôi đăng trên stackoverflow vì vậy tôi xin lỗi vì bất kỳ rủi ro nào trong bố cục và vân vân (lời khuyên chào mừng). Sự giúp đỡ của bạn được đánh giá rất cao!Trực quan hóa truy vấn hồi quy đa đầu ra scikit-learn/sklearn trong png hoặc pdf
Tôi đang cố gắng hình dung đầu ra của DecisionTreeRegressor với nhiều kết quả đầu ra (như được mô tả trong http://scikit-learn.org/stable/auto_examples/tree/plot_tree_regression_multioutput.html#example-tree-plot-tree-regression-multioutput-py) ở định dạng png hoặc pdf bằng cách sử dụng pydot.
Mã tôi đã cố gắng trông như thế này:
...
dtreg = tree.DecisionTreeRegressor(max_depth=3)
dtreg.fit(x,y)
tree.export_graphviz(dtreg, out_file='tree.dot') #print dotfile
dot_data = StringIO()
tree.export_graphviz(dtreg, out_file=dot_data)
print dot_data.getvalue()
pydot.graph_from_dot_data(dot_data.getvalue()).write_pdf("pydot_try.pdf")
Viết pdf cho các lỗi sau đây:
pydot.InvocationException: Program terminated with status: 1. stderr follows: Warning: /tmp/tmpAy7d59:7: string ran past end of line Error: /tmp/tmpAy7d59:8: syntax error near line 8 context: >>> [ <<< 0.20938667] Warning: /tmp/tmpAy7d59:18: string ran past end of line Warning: /tmp/tmpAy7d59:20: string ran past end of line
và vân vân với nhiều "chuỗi chạy cuối quá khứ của dòng" lỗi.
Tôi chưa bao giờ làm việc với .dot trước đây, nhưng tôi nghi ngờ có thể có sự cố với định dạng nhiều đầu ra. Ví dụ: một phần của cây trông như sau:
digraph Tree {
0 [label="X[0] <= 56.0000\nmse = 0.0149315126135\nsamples = 41", shape="box"] ;
1 [label="X[0] <= 40.0000\nmse = 0.0137536911947\nsamples = 25", shape="box"] ;
0 -> 1 ;
2 [label="X[0] <= 24.0000\nmse = 0.0152142545276\nsamples = 21", shape="box"] ;
1 -> 2 ;
3 [label="mse = 0.0140\nsamples = 15\nvalue = [[ 0.83384667]
[ 0.20938667]
[ 0.08511333]
[ 0.04234667]
[ 0.08158 ]
[ 0.17948667]
[ 0.03616 ]
[ 0.00995333]
[ 0.99529333]
[ 0.13715333]
[ 0.10294667]
[ 0.06632667]]", shape="box"] ;
2 -> 3 ;
4 [label="mse = 0.0170\nsamples = 6\nvalue = [[ 0.69588333]
[ 0.20275 ]
[ 0.0953 ]
[ 0.0436 ]
[ 0.1216 ]
[ 0.17248333]
[ 0.04393333]
[ 0.01178333]
[ 0.99913333]
[ 0.12348333]
[ 0.10838333]
[ 0.06973333]]", shape="box"] ;
2 -> 4 ;
}
Tôi không biết cách giải quyết điều này, vì đó chỉ là kết quả tôi nhận được từ DecisionTreeRegressor.
Tôi cũng đã cố gắng chuyển đổi dot file:
dot -Tpng tree.dot -o tree.png
Nhưng điều này mang đến cho các lỗi tương tự (string chạy cuối quá khứ của dòng) Tôi cũng đã cố gắng hình dung tree.dot sử dụng xdot và đó đã cho các lỗi tương tự.
Mã tương tự cũng hoạt động tốt cho tôi ngay bây giờ. Tôi không chắc điều gì đã xảy ra/đã được khắc phục, nhưng cảm ơn vì đã chỉ ra điều đó! – CSquare