Có một số bài viết về cách mã hóa dữ liệu chủng loại cây Sklearn decission, nhưng từ tài liệu Sklearn, chúng tôi đã nhận nhữngTruyền dữ liệu phân loại để Sklearn Quyết định Tree
Some advantages of decision trees are:
(...)
Able to handle both numerical and categorical data. Other techniques are usually specialised in analysing datasets that have only one type of variable. See algorithms for more information.
Nhưng chạy kịch bản sau đây
import pandas as pd
from sklearn.tree import DecisionTreeClassifier
data = pd.DataFrame()
data['A'] = ['a','a','b','a']
data['B'] = ['b','b','a','b']
data['C'] = [0, 0, 1, 0]
data['Class'] = ['n','n','y','n']
tree = DecisionTreeClassifier()
tree.fit(data[['A','B','C']], data['Class'])
kết quả đầu ra được lỗi sau:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python2.7/site-packages/sklearn/tree/tree.py", line 154, in fit
X = check_array(X, dtype=DTYPE, accept_sparse="csc")
File "/usr/local/lib/python2.7/site-packages/sklearn/utils/validation.py", line 377, in check_array
array = np.array(array, dtype=dtype, order=order, copy=copy)
ValueError: could not convert string to float: b
Tôi biết rằng trong R có thể truyền dữ liệu phân loại, với Sklearn, có thể không?
-1 điều này gây hiểu lầm. Vì nó đứng, cây quyết định sklearn không xử lý dữ liệu phân loại - [xem vấn đề # 5442] (https://github.com/scikit-learn/scikit-learn/issues/5442). Cách tiếp cận này khi sử dụng Mã hóa nhãn chuyển đổi thành các số nguyên mà 'DecisionTreeClassifier()' ** sẽ coi là số **. Nếu dữ liệu phân loại của bạn không phải là thứ tự, điều này là không tốt - bạn sẽ kết thúc với các phần tách không có ý nghĩa. Sử dụng 'OneHotEncoder' là cách duy nhất hợp lệ hiện tại, nhưng tốn kém tính toán. – kungfujam
@Abhinav, Có thể áp dụng 'LabelEncoder' trên nhiều cột của một khung dữ liệu cùng một lúc không?Ví dụ, trong khung dữ liệu từ câu hỏi, chúng ta có thể làm một cái gì đó như 'le.fit_transform (dữ liệu [['A', 'B', 'C']])' để nhận nhãn cho tất cả các cột phân loại cùng một lúc không? Hoặc nên chỉ định các cột phân loại một cách rõ ràng để chỉ chuyển đổi các cột phân loại. – Minu
@kungfujam, Ngoài ra, tôi muốn 'One-Hot Encode' các cột phân loại khi tôi 'LabelEncode' chúng - để giải quyết vấn đề mà @kungfujam chỉ ra. Làm thế nào tôi có thể làm điều đó một khi tôi nhận được mã hóa nhãn thực hiện? – Minu