2014-10-05 17 views
5

Tôi đang sử dụng một DecissionTreeClassifier scikit-learning trên một tập dữ liệu 3 lớp. Sau khi tôi phù hợp với trình phân loại, tôi truy cập tất cả các nút lá trên thuộc tính tree_ để nhận được số lượng các cá thể kết thúc trong một nút nhất định cho mỗi lớp.ánh xạ scikit-learning DecisionTreeClassifier.tree_.value để dự đoán lớp

clf = tree.DecisionTreeClassifier(max_depth=5) 
clf.fit(X, y) 
# lets assume there is a leaf node with id 5 
print clf.tree_.value[5] 

này sẽ in ra:

>>> array([[ 0., 1., 68.]]) 

nhưng ... làm thế nào để tôi biết được vị trí trong mảng đó thuộc mà lớp học? Bộ phân loại có một thuộc tính classes_ đó cũng là một danh sách

>>> clf.classes_ 
array(['CLASS_1', 'CLASS_2', 'CLASS_3'], dtype=object) 

Có lẽ chỉ số 1 về mảng giá trị phù hợp với lớp trên chỉ số 1 của mảng lớp và vân vân?

+0

Vui lòng đăng câu trả lời riêng thay vì chỉnh sửa câu hỏi đó thành câu hỏi. Sau đó, bạn có thể chấp nhận câu trả lời của riêng bạn để đánh dấu câu hỏi là đã đóng. –

+0

@ larsmans, đó là quy tắc chung? Tôi đã từng đọc một bài đăng nơi một người nào đó đã làm điều đó và nhận được một bình luận nói rằng anh ấy nên làm những gì tôi đã làm. Danh tiếng của bạn dường như đủ cao tho. Tôi sẽ làm điều đó và hy vọng không ai nói ngược lại: S – nemi

Trả lời

6

Được hỏi về điều này trong danh sách gửi thư scikit-learm và dự đoán của tôi là đúng. Chỉ ra chỉ số 1 trên mảng giá trị khớp với lớp trên chỉ mục 1 của mảng lớp và như vậy trên

+0

Cảm ơn bạn và +1! –

0

Không, nó không phải là clf.classes_ nhưng clf.tree_.feature chứa chỉ mục cột của X. Và, nếu X là Pandas DataFrame, X.columns chứa tên. Bạn có thể tìm thêm thông tin chi tiết trong a similar question.

+0

Hi @jihun, tôi đoán bạn hiểu lầm, mảng giá trị (clf.tree_.value [5]) không chứa các tính năng, nó chứa các bộ đếm cho số lượng các cá thể cho một lớp đã cho trong nút đó (trong trường hợp này là nút 5), những gì tôi cần là ánh xạ các bộ đếm đó tới tên lớp tương ứng. – nemi

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