2013-11-23 13 views
28

Tôi đã khám phá việc học hỏi bằng scikit, đưa ra những cây quyết định với cả hai tiêu chí phân chia entropy và gini, và khám phá sự khác biệt.Làm cách nào để tìm các thuộc tính mà cây của tôi chia tách khi sử dụng tính năng tìm hiểu bằng scikit?

Câu hỏi của tôi là làm cách nào tôi có thể "mở mui xe" và tìm ra chính xác thuộc tính nào cây chia tách ở mỗi cấp cùng với giá trị thông tin liên quan của chúng.

Cho đến nay, tôi đã khám phá 9 phương pháp được nêu trong tài liệu. Chúng dường như không cho phép truy cập thông tin này. Nhưng chắc chắn thông tin này có thể truy cập được không? Tôi đang hình dung một danh sách hoặc dict có mục cho nút và đạt được.

Cảm ơn sự giúp đỡ của bạn và lời xin lỗi của tôi nếu tôi đã bỏ lỡ điều gì đó hoàn toàn hiển nhiên.

Trả lời

26

Trực tiếp từ tài liệu (http://scikit-learn.org/0.12/modules/tree.html):

from StringIO import StringIO 
out = StringIO() 
out = tree.export_graphviz(clf, out_file=out) 

Ngoài ra còn có các tree_ thuộc tính trong đối tượng cây quyết định của bạn, cho phép truy cập trực tiếp đến toàn bộ cấu trúc.

Và bạn chỉ có thể đọc nó

clf.tree_.children_left #array of left children 
clf.tree_.children_right #array of right children 
clf.tree_.feature #array of nodes splitting feature 
clf.tree_.threshold #array of nodes splitting points 
clf.tree_.value #array of nodes values 

để biết thêm chi tiết nhìn vào source code of export method

Nói chung bạn có thể sử dụng inspect mô-đun

from inspect import getmembers 
print(getmembers(clf.tree_)) 

để có được tất cả các yếu tố của đối tượng

Decision tree visualization from sklearn docs

+6

Từ "trái" luôn là giá trị "đúng" và đúng là "sai"? –

+0

Liên kết đầu tiên bị hỏng – Dzhao

7

Nếu bạn chỉ muốn xem nhanh mà những gì đang xảy ra trong cây, hãy thử:

zip(X.columns[clf.tree_.feature], clf.tree_.threshold, clf.tree_.children_left, clf.tree_.children_right) 

trong đó X là khung dữ liệu của các biến độc lập và CLF là đối tượng cây quyết định. Lưu ý rằng clf.tree_.children_leftclf.tree_.children_right cùng nhau chứa thứ tự mà các phần tách được tạo ra (mỗi một trong số này sẽ tương ứng với một mũi tên trong hiển thị đồ thị).

Các vấn đề liên quan